码迷,mamicode.com
首页 > 数据库 > 详细

2020.03.27 JDBCTemplate常用方法

时间:2020-03-27 21:36:30      阅读:57      评论:0      收藏:0      [点我收藏+]

标签:rri   gets   set   name   result   exception   对象   tst   版本   

查询
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常用方法

标签:rri   gets   set   name   result   exception   对象   tst   版本   

原文地址:https://www.cnblogs.com/aojie/p/12584352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!