Spring JdbcTemplate学习笔记(二) —— 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); 

这里不能直接映射为一个实体类,如

User user = jdbcTemplate.queryForObject(sql, User.class);

运行时会报错。
如果想映射为具体的实体,可以使用ORM框架,或者后面介绍的方法。

queryForObject(sql, requiredType, args…)

第三个参数是个可变参数

String sql = "select count(*) from user where ID<? AND ID>?";
jdbcTemplate.queryForObject(sql, Integer.class,4,2 );

queryForObject(sql, args[], requiredType)

第二个参数是个参数数组

jdbcTemplate.queryForObject(sql,new Integer[]{5,1}, Integer.class)

也可以使用不同类型的参数

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

jdbcTemplate.queryForObject(sql, new Object[]{1,"%哈%"},Integer.class);

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;
}
});

或者使用RowMapper的实现类:BeanPropertyRowMapper

String sql = "select * from user WHERE ID = 1";
User user = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper<>(User.Class));

传参也是跟上面相同,两种方法。

queryForList

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

List<Map<String, Object>> rows = jdbcTemplate.queryForList("SELECT * FROM user");  

//得到装有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"));    
}   

传参同上。

queryForMap

//这个查询只能是查询一条记录的查询,返回一个map,key的值是column的值    
Map<String, Object> map = jdbcTemplate.queryForMap("select * from user");    
map.get("name ");

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注入,获得注入后可以执行操作
不需要继承什么基类
*/

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值