JdbcTemplate中如何进行查询操作?

JdbcTemplate提供了多种方式进行查询操作,主要有:

  1. queryForMap():查询一行并返回Map。
String sql = "SELECT * FROM user WHERE id = ?";  
Map<String, Object> user = jdbcTemplate.queryForMap(sql, 1);
  1. queryForList():查询多行并返回List。
String sql = "SELECT * FROM user";  
List<Map<String, Object>> users = jdbcTemplate.queryForList(sql); 
  1. query():查询并自定义返回结果类型,通过RowMapper接口转换。
String sql = "SELECT * FROM user WHERE age > ?";
List<User> users = jdbcTemplate.query(sql, new Object[] {20}, 
    (rs, rowNum) -> {
        return new User(rs.getString("name"), rs.getInt("age"));
    }
);
  1. queryForObject():查询单行单列并返回对象,适用于聚合函数等。
String sql = "SELECT COUNT(1) FROM user";  
Integer count = jdbcTemplate.queryForObject(sql, Integer.class);
  1. queryWithRowCallback():通过调用RowCallbackHandler处理每行查询结果。
String sql = "SELECT * FROM user";
jdbcTemplate.query(sql, new RowCallbackHandler() {
    public void processRow(ResultSet rs) throws SQLException {
        User user = new User(rs.getString("name"), rs.getInt("age"));
        // ...
    }
}); 

所以,JdbcTemplate通过以上5种主要方式,可以灵活进行查询操作并自定义返回结果,基本涵盖了各种需求。其中query()queryForList()等方式支持的参数绑定,可以有效防止SQL注入。

相比直接使用JDBC,JdbcTemplate简化了查询操作的代码量,并自动处理资源管理等底层细节,这也是它易于使用的主要原因。