文章标题

jdbcTemplate

1,jdbcTemplate针对数据查询提供了多个重载的模板方法:
Int queryForInt(String sql)
Int queryForInt(String sql,Object[] args)
Long queryForLong(String sql)
Long queryForLong(String sql,Object[] args)
Object queryForObject(String sql,class queriedType)
Object queryForObject(String sql,Object[] args,class queriedType)
Map queryForMap(String sql)
Map queryForMap(String sql,Object[] args)
List queryForList(String sql)
List queryForList(String sql,Object[] args)
例子:
Int count = jdbcTemplate.queryForInt(“select age from user where userId=?”,new Object[]{new Integer(100)})
queryForMap与其它方法的区别在于,它的查询结果是以java.util.Map的形式返回,map中的key值就是所查表的列名,value值就是key所对应的列的值。
queryForList 它的查询结果是以java.util.list的形式返回,其中每一个元素都是java.util.map类型,分别对应结果集中的一行。
2,用于查询的回调有3种:
1)org.springframework.jdbc.core.ResultSetExtractor,相对拥有更多的控制权,使用它需要自行处理ResultSet,处理完后可以将结果以任何形式包装后返回。它的返回结果是Object类型的。需要我们声明一个list,循环遍历结果集,并组装数据。
//org.springframework.jdbc.core.ResultSetExtractor
List userList = (List)jdbcTemplate.query(String sql ,new ResultSetExtractor(){
public Object extractData(Result rs)throws SQLException,DataAccessException{
List users = new ArrayList();
while(rs.next()){
User user = new User();
user.setUserName(rs.getString(1));

users.add(user);
}
return users;
}
});
2)org.springframework.jdbc.core.RowCallBackHandler,仅仅关注单行结果的处理,它的返回值为空。可以在程序中声明一个集合容器,来存储处理后的结果。
3)
//org.springframework.jdbc.core.RowCallBackHandler
final List users = new ArrayList();
jdbcTemplate.query(String sql, new RowCallBackHandler(){
public void processRow(Result rs) throws SQLException{
User user = new User();
user.setUserName(rs.getString(“userName”));

users.add(user);
}
});
4)org.springframework.jdbc.core.RowMapper ResultSetExtractor的精简版,类似于RowCallBackHandler,也只关注处理单行的结果,不过,处理后的结果将由ResultSetExtractor的实现类进行组合,
//org.springramework.jdbc.core.RowMaper.
List userList = jdbcTemplate.query(String sql, new RowMapper(){
public Object mapRow(Result rs , int rowNumber) throws SQLException{
User user = new User();
user.setUserName(rs.getString(1));

return user;
}
});
2,要是用jdbcTemplate对象来操作数据库,通常情况下有3种方式得到jdbcTemplate对象
1)我们可以在自定义的dao中注入DataSource,自己来实例化jdbcTemplate。
2)在spring容器中配置一个jdbcTemplate,将DataSource注入进来,然后注入到dao中。
3)Spring提供了org.springframework.jdbc.core.support.jdbcDaoSupport类,这个类中定义了jdbcTemplate属性,也定义了DataSource属性,当设置DataSource时,会实例化jdbcTemplate,所以在编写dao时只要继承JdbcDaoSupport,然后注入DataSource即可,

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值