基于RowMapper的查询
改为queryForObject
第一个参数为sql
第二个参数为查询条件的参数,
第三个参数为RowMapper,这个对象可以完成一个对象和数据库字段的对应, 实现RowMapper,实现mapRow()方法,
测试
2、List查询,使用query,
测试
三、对比上面两个例子, 他们有一个共同点, RowMapper的实现相同,
new RowMapper<User>() {
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
Group g = new Group();
g.setId(rs.getInt("gid"));
g.setGroupName(rs.getString("groupname"));
User u = new User();
u.setId(rs.getInt("id"));
u.setUsername(rs.getString("username"));
u.setPassword(rs.getString("password"));
u.setNickname(rs.getString("nickname"));
u.setGroup(g);
return u;
}
我们可以将这段代码提取出来 , 作为一个静态内部类
在官网中的案例就是这么做的
查询的结果为记录条数count(*)
public void query() {
String sql = "select count(*) from t_user";
int rowNum = jdbcTemplate.queryForObject(sql, null, Integer.class);
System.out.println("获取" + rowNum + "条");
}
获取某个字段, 返回的是一个列表
public void query() {
String sql = "select username from t_user";
List<String> names = jdbcTemplate.queryForList(sql, String.class);
for (String name : names) {
System.out.println(name);
}
}