NamedParameterJdbcDaoSupport 官方文档给出的定义是:模板类与JDBC的基本操作集,允许命名参数,而不是传统的使用'?'占位符。
具体的使用见代码:
public class UserDAOImpl extends NamedParameterJdbcDaoSupport implements
IUserBeanDAO {
private NamedParameterJdbcTemplate daoTmplt;
public final static String FIND_BY_ID_RNG = "SELECT id,name,psd FROM users WHERE id >= :MIN_ID AND id <=:MAX_ID";
public final static String GET_USER_FROM_ID = "SELECT id,name,psd FROM users WHERE id = :ID";
public final static String ADD_USER = "INSERT INTO users (name,psd) VALUES (:NAME,:PASSWORD)";
public final static String UPDATE_USER = "UPDATE users SET name = :NAME, psd = :PASSWORD WHERE id = :ID";
public final static String DELETE_USER = "DELETE FROM users WHERE id = :ID";
/**
* 根据id的范围遍历用户的信息
*/
public List findByIDRange(Map userMap) {
daoTmplt = getNamedParameterJdbcTemplate();
/**
* 传入参数映射中的值存储在双字节数组中,顺序与SQL字符串中的位置参数相同。
* query()方法以包含Map(用列名作为键,一项对应一列)的List(一项对应一行)的方式返回查询结果
*/
return daoTmplt.query(FIND_BY_ID_RNG, userMap, new UserTOMapper());
}
}
UserTOMapper的具体实现:
public class UserTOMapper implements RowMapper {
public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
int id = rs.getInt("id");
String name = rs.getString("name");
String password = rs.getString("psd");
User empTo = new User(id, name, password);
return empTo;
}
}
daoContext.xml的配置文件为:
<bean id="jdbcTemplate" abstract="true" lazy-init="true">
<property name="dataSource">
<ref bean="dataSource" />
</property>
</bean>
<bean id="userDAO" class="com.test.dao.jdbc.UserDAOImpl"
parent="jdbcTemplate" />
其中,NamedParameterJdbcTemplate 提供了很多种方式来处理查询得到的结果集,具体的见api说明。