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)線程

缺點:編碼比較麻煩。設計

相關文章
相關標籤/搜索