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); } }