本文主要是介绍Spring JdbcTemplate 查询方法详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
前面已经讲了JdbcTemplate的增删改操作,接下来看一下查询
查询操作
(1)<T> T queryForObject(String sql, Class requiredType)
- 查询一个值,不需要注入参数
注意:参数requiredType只能是String,Integer这种类型,不能是自定义的实体类型,只能返回一个值,不能映射对象(映射对象下面会说)
sql:预处理sql;requiredType:查询单列结果的类型;
public void test(Integer id) {String sql = "select name from test where id = 1";String name = jdbcTemplate.queryForObject(sql, new Object[]{id}, String.class);}
(2) <T> T queryForObject(String sql, Object[] args, Class requiredType)
- 查询一个值(预处理sql,需要注入参数)
public Integer isExitType(String type_name) {String isExitSql = "select type_id from type where type_name = ?";//当results为空时,就会抛出EmptyResultDataAccessException异常,Spring这样做的目的是为了防止程序员不对空值进行判断,保证了程序的健壮性。//另外,当results的size大于1时,还会抛出IncorrectResultSizeDataAccessException异常,以保证返回的记录只有一条。//如果我们想查询结果为空时,返回null而不是抛出异常,就需要捕获EmptyResultDataAccessException,然后返回nulltry {Integer typeId = template.queryForObject(isExitSql, Integer.class, type_name);return typeId;} catch (DataAccessException e) {return null;}
}
(3)<T> T queryForObject(String sql, Object[] args, RowMapper rowMapper)
- 查询单行数据,转换为一个对象
public void test(Integer id) {//参数也是局部变量,也必须用final修饰,内部类中才能访问(全局变量不用)
String sql = "select name,age from test where id = ?";Customer customer = jdbcTemplate.queryForObject(sql, new Object[]{id}, new RowMapper<Customer>() {@Overridepublic Customer mapRow(ResultSet rs, int paramInt)throws SQLException {Customer c = new Customer();c.setName(rs.getString("name"));c.setAge(rs.getInt("age"
这篇关于Spring JdbcTemplate 查询方法详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!