要使用spring提供的类也得给它传一个数据源,这里我们使用SimpleJdbcTemplate这个模板进行操作,因为它包括JdbcTemplate,NamedParameterJdbcTempla
te两个模板,所以既有前面两者的功能
//而且还有自己的特性,使用会比较方便
private SimpleJdbcTemplate simpleJdbcTemplate = new SimpleJdbcTemplate(JdbcUtils.getDataSource());
public void addUser(User user) {
//这里使用了命名参数,也就是使用了NamedParameterJdbcTemplate类的功能,因为这样就不用分别赋值,而是根据传来的实体自动进行赋值,不过前提是命名的名字得
//跟实体的字段名一致才能使用这一功能
String sql = "insert into user(name, money, birthday) values(:name, :money, :birthday)";
//将实体bean将参数进行赋值
SqlParameterSource param = new BeanPropertySqlParameterSource(user);
//这是存放主键的,当我们想把刚插入的字段的主键得到,使用它就可拿到
KeyHolder keyHolder = new GeneratedKeyHolder();
this.simpleJdbcTemplate.getNamedParameterJdbcOperations().update(sql, param, keyHolder);
//把插入的主键得到赋给bean
user.setId(keyHolder.getKey().intValue());
接下来是删除、查找、更新的实现代码(用Spring提供的模板类实现)
public void delete(User user) {
String sql = "delete from user where id=?";
//这里用到simpleJdbcTemplate中的可变参数特性
this.simpleJdbcTemplate.update(sql, user.getId());
}
public User findUser(String loginName, String password) {
String sql = "select id, name, money, birthday from user where name=?";
//ParameterizedBeanPropertyRowMapper.newInstance(User.class)是一个行映射器,
//也就是我们把查找的记录最终映射成一个User实体
return this.simpleJdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class), loginName);
}
public User getUser(int userid) {
String sql = "select id, name, money, birthday from user where id=?";
return this.simpleJdbcTemplate.queryForObject(sql, ParameterizedBeanPropertyRowMapper.newInstance(User.class), userid);
}
public void update(User user) {
String sql = "update user set name=:name,birthday=:birthday,money=:money where id=:id";
SqlParameterSource param = new BeanPropertySqlParameterSource(user);
this.simpleJdbcTemplate.getNamedParameterJdbcOperations().update(sql, param);
}