Spring——JdbcTemplate和namedParameterJdbcTemplate

1.JdbcTemplatejava

JdbcTemplate类被设计成线程安全的,因此能够在IOC容器中声明它的单个实例,并将这个实例注入到全部的DAO实例中。spring

JdbcTemplate使用SQL语句放入DAO类的各个方法中封装。sql

即DAO类中的各个方法,调用自动装配的JdbcTemplate对象(即让JdbcTemplate做为DAO类的成员变量),来调用String类型的SQL。安全

配置文件
<bean id="jdbcTemplate"
    class="org.springframework.jdbc.core.jdbcTemplate">
    <property name="dataSource" ref="dataSource"></property>
</bean>
@repository
public class EmployeeDao{
    @Autowire
    private JabcTemplate jdbcTemplate;

    public Employee get(Integer id){
        String sql="SELECT id,last_name lastName,email FROM employee WHERE id=?";
        RowMapper<Employee> rowMapper=new BeanPropertyRowMapper<>(Employee.class);
        Employee employee=jdbcTemplate.querForObject(sql,rowMapper,id);

        return emploee;
    }

}

2.NamedParameterJdbcTemplateapp

它有带参的构造器,所以配置bean时,必须传入一个DataSource编码

<!--配置它时,该对象可使用具名参数,即带有名字的参数,其没有无参数的构造器,因此必须为其构造器指定参数-->
<bean id="namedParameterJdbcTemplate"
    class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate">
    <constructor-arg ref="dataSource"></construct-arg>
</bean>

好处①若有多个参数,则不用再去对应位置,直接对应参数名,便于维护。spa

②也能够直接传入一个对象-使用update(String sql,SqlParameterSource  parameterSource)线程

缺点:编码比较麻烦。设计

相关文章
相关标签/搜索