2020.03.27 JDBCTemplate常用方法

Posted ByLir

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2020.03.27 JDBCTemplate常用方法相关的知识,希望对你有一定的参考价值。

查询
queryForObject
//关于 jdbcTemplate的queryForObject方法。下面我们就一一解析一下:
spring 3.2.2 版本之后jdbcTemplate.queryForInt()和jdbcTemplate.queryForLong() 就取消了,全部用queryForObject代替了,这里就不详解了。

queryForObject(sql, requiredType)
本质上和queryForInt相同,只是可以返回不同的对象,例如返回一个String对象
2个参数,1、sql 2、返回来的对象class

String sql = "select count(*) from user";
Integer num = jdbcTemplate.queryForObject(sql, Integer.class);
1
2
这里不能直接映射为一个实体类,如

User user = jdbcTemplate.queryForObject(sql, User.class);
1
运行时会报错。
如果想映射为具体的实体,可以使用ORM框架,或者后面介绍的方法。

queryForObject(sql, requiredType, args…)
第三个参数是个可变参数

String sql = "select count(*) from user where ID<? AND ID>?";
jdbcTemplate.queryForObject(sql, Integer.class,4,2 );
1
2
queryForObject(sql, args[], requiredType)
第二个参数是个参数数组

jdbcTemplate.queryForObject(sql,new Integer[]{5,1}, Integer.class)
1
也可以使用不同类型的参数

String sql = "select count(*) from user where ID>? AND USER_NAME LIKE ?";

jdbcTemplate.queryForObject(sql, new Object[]{1,"%哈%"},Integer.class);
1
2
3
queryForObject(sql, rowMapper)
注意,这里查询必须保证只能查询一条数据,否则会报错。

String sql = "select * from user WHERE ID = 1";
User user = jdbcTemplate.queryForObject(sql, new RowMapper<User>(){
@Override
public User mapRow(ResultSet rs, int rowNum) throws SQLException {
User user = new User();
user.setId(rs.getInt("ID"));
user.setUserName(rs.getString("USER_NAME"));
return user;
}
});
1
2
3
4
5
6
7
8
9
10
或者使用RowMapper的实现类:BeanPropertyRowMapper

String sql = "select * from user WHERE ID = 1";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.Class));
1
2
传参也是跟上面相同,两种方法。

queryForList
返回一个装有map的list,每一个map是一条记录,map里面的key是字段名

List<Map<String, Object>> rows = jdbcTemplate.queryForList("SELECT * FROM user");
1
//得到装有map的list

for(int i=0;i<rows.size();i++){ //遍历
Map userMap=rows.get(i);
System.out.println(userMap.get("id"));
System.out.println(userMap.get("name"));
System.out.println(userMap.get("age"));
}
1
2
3
4
5
6
传参同上。

queryForMap
//这个查询只能是查询一条记录的查询,返回一个map,key的值是column的值
Map<String, Object> map = jdbcTemplate.queryForMap("select * from user");
map.get("name ");
1
2
3
queryForRowSet
//返回一个结果集然后调用.getString或者getInt等去取值

query方法就不详解了,不常用,有queryForXXX方法基本够用。

更新
execute
执行sql语句,无返回执,用于更新操作(增、删、改)
jdbcTemplate.execute(sql);

update
更新操作,返回受影响的行数
Int rowNum = jdbcTemplate.update(sql);

batchUpdate
执行批量更新,参数为string数组
String[] sql = new String[2];
sql[0] = “”;
sql[1] = “”;
jdbcTemplate.batchUpdate(sql);
//更新,args为对象数组
jdbcTemplate.update(sql, args[]);

/*
说明:
JDBCTemplate的使用方法:
在ApplicationContext.xml中定义一个jdbcTemplate的节点,使用POJO注入,获得注入后可以执行操作
不需要继承什么基类
*/

以上是关于2020.03.27 JDBCTemplate常用方法的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记——定义切面优先级 ;Spring中的JdbcTemplate;JdbcTemplate的常用API

jdbcTemplate的一些常用方法

Spring JdbcTemplate类常用的方法

每日思考(2020/03/27)

2020.03.27

Spring中使用JdbcTemplate