1. 程式人生 > >Spring4(6)——對DAO(JDBC)的支援(JdbcDaoSupport)

Spring4(6)——對DAO(JDBC)的支援(JdbcDaoSupport)

Spring 對 JDBC 的支援(JdbcDaoSupport)

dao類繼承 JdbcDaoSupport 

public class StudentDaoImpl extends JdbcDaoSupport implements StudentDao{
  ......
}

此時不需要自己定義 jdbcTemplate ,即

dao類中不再需要(刪除以下)

private JdbcTemplate jdbcTemplate;
    
public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
     
this.jdbcTemplate = jdbcTemplate; }

 beans.xml 裡不再需要配置(刪除以下)

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    <property name="dataSource" ref="dataSource"></property>
</bean>

但需在 beans.xml 中將資料來源注入到dao配置(增加以下)

<bean 
id="studentDao" class="com.java1234.dao.impl.StudentDaoImpl"> <property name="dataSource" ref="dataSource"></property> </bean>

 

NamedParameterJdbcTemplate 的使用,支援命名引數變數; 

beans.xml 裡配置

<bean id="namedParameterJdbcTemplate" class="org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate"
> <constructor-arg ref="dataSource"></constructor-arg> </bean> <bean id="studentDao" class="com.java1234.dao.impl.StudentDaoImpl"> <property name="namedParameterJdbcTemplate" ref="namedParameterJdbcTemplate"></property> </bean>

 

Dao類 

public class StudentDaoImpl implements StudentDao{

    private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
    
    public void setNamedParameterJdbcTemplate(
            NamedParameterJdbcTemplate namedParameterJdbcTemplate) {
        this.namedParameterJdbcTemplate = namedParameterJdbcTemplate;
    }

    @Override
    public int addStudent(Student student) {
        String sql="insert into t_student values(null,:name,:age)"; //:name
        MapSqlParameterSource sps=new MapSqlParameterSource();   //使用MapSqlParameterSource
        sps.addValue("name", student.getName());
        sps.addValue("age", student.getAge());
        return namedParameterJdbcTemplate.update(sql,sps);
    }
}