用Spring的JdbcTemplate模板查找所有
查询需要sql语句和rowMapper映射
/**
* 查询集合List<POJO>
* @return
*/
public List<Account> selectAll(){
String sql = "select * from Account";
List<Account> list = template.query(sql, new RowMapper<Account>() {
public Account mapRow(ResultSet resultSet, int i) throws SQLException {
//ResultSet是数据库单条记录
//i是循环的次数
System.out.println(i);
return rowMapperHandler(resultSet);
}
});
return list;
}
手动创建rowMapperHandler工具类
/**
* 工具方法:把数据库一条记录映射成一个POJO,
* 如果表的字段和对像属性一致的话,可以使用spring提供BeanPropertyRowMapper
* 不论查询集合,还是单个对像,返回值一定是要封装成的POJO类型
* @param resultSet 对应数据库的单条记录,不带表整个结果集
* @return
*/
public Account rowMapperHandler(ResultSet resultSet){
try {
Integer id = resultSet.getInt("id");
String username = resultSet.getString("username");
Double money = resultSet.getDouble("money");
Account account = new Account();
account.setId(id);
account.setMoney(money);
account.setUsername(username);
return account;
}catch (Exception e){
e.printStackTrace();
}
return null;
}
代码重复量大,Spring提供了BeanPropertyRowMapper将上面代码封装
public List<Account> selectById2(){
String sql = "select * from Account";
BeanPropertyRowMapper<Account> mapper = new BeanPropertyRowMapper<Account>(Account.class);
List<Account> list = template.query(sql, mapper);
return list;
}
查询单个
/**
* 查询单个POJO,使用内置映射类BeanPropertyRowMapper
* @param id
* @return
*/
public Account selectById2(int id){
String sql = "select * from Account where id = ?";
BeanPropertyRowMapper<Account> mapper = new BeanPropertyRowMapper<Account>(Account.class);
Account account = template.queryForObject(sql, mapper,id);
return account;
}