一、查询
1.无条件查询,返回一个字段,需要使用queryForObject方法
@Repository
public class TestMapper {
@Resource
private JdbcTemplate jdbcTemplate;
//无条件查询,返回一个字段
public Integer selectCount() {
String sql = "select count(*) from user";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
return count;
}
}
2.条件查询,返回一个字段
//条件查询,返回一个字段
public Integer selectCountById() {
String sql = "select count(*) from user where id=?";
Integer count = jdbcTemplate.queryForObject(sql, Integer.class, 1);
return count;
}
3.条件查询,返回一个对象,需要一个RowMapper,将查询结果集ResultSet映射成一个对象
//条件查询,返回一个对象
public UserVO getUser(Integer id) {
String sql = "select * from user where id=?";
UserVO userVO = jdbcTemplate.queryForObject(sql, new RowMapper<UserVO>() {
@Override
public UserVO mapRow(ResultSet rs, int rowNum) throws SQLException {
UserVO userVO = new UserVO();
userVO.setId(rs.getInt("id"));
userVO.setUserName(rs.getString("user_name"));
userVO.setAge(rs.getInt("age"));
return userVO;
}
}, id);
return userVO;
}
4.查询返回列表,需要使用query方法
//查询返回列表
public List<UserVO> getUserVOS() {
String sql = "select * from user";
List<UserVO> userVOS = jdbcTemplate.query(sql, new RowMapper<UserVO>() {
@Override
public UserVO mapRow(ResultSet rs, int rowNum) throws SQLException {
UserVO userVO = new UserVO();
userVO.setId(rs.getInt("id"));
userVO.setUserName(rs.getString("user_name"));
userVO.setAge(rs.getInt("age"));
return userVO;
}
});
return userVOS;
}
二、修改
JdbcTemplate提供update方法来实现SQL的新增、修改、删除、执行存储过程等。
1.update操作
//update操作
public Integer updateUserVO(UserVO userVO) {
String sql = "update user set user_name = ? and age = ? where id = ?";
int i = jdbcTemplate.update(sql, userVO.getUserName(), userVO.getAge(), userVO.getId());
return i;
}
2.insert操作
Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder,该类返回新增记录时的自增长主键值。
//insert操作
public Integer insertUserVO(UserVO userVO) {
String sql = "insert into user (user_name, age) values (?, ?)";
//该类返回新增记录时的自增长主键值
KeyHolder keyHolder = new GeneratedKeyHolder();
int i = jdbcTemplate.update(new PreparedStatementCreator() {
@Override
public PreparedStatement createPreparedStatement(Connection con) throws SQLException {
PreparedStatement ps = con.prepareStatement(sql, new String[]{"id"});
ps.setString(1, userVO.getUserName());
ps.setInt(2, userVO.getAge());
return ps;
}
}, keyHolder);
return keyHolder.getKey().intValue();
}