JDBCTemplate基础方法query()的运用

本文深入探讨了Spring框架中的JDBCTemplate组件,并重点介绍了其核心方法query()的使用方式及自定义结果集返回类型的实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原创文章,转载时请注明出处。


最近公司在优化代码,把基础的JDBCsql语句转为JDBCTemplate,自己在网上找了很久,大多都是query()方法的延伸,比如queryForObject(),queryForInt(),queryForString(),queryForList(),queryForMap()等等的介绍,反而没有根源方法query()的说明,于是请教了公司里的前辈,瞬间感觉豁然开朗。


首先是代码


JdbcTemplate jdbcTemplate = new JdbcTemplate();
List list;
list = jdbcTemplate.query(sql,new Object[] { args1,args2 }, new RowMapper()
{
	@Override
     public Object mapRow(ResultSet rs, int rowNum) throws SQLException 
	{
		//statements...
	}
});

先从参数讲起:

sql是已经写好的sql查询语句,args1,args2是需要替换sql语句占位符的参数,注意必须按照顺序一一对应,其他部分都可以不用修改,这样的话已经可以达成一个基础的sql语句查询并返回结果的功能。

然后是返回类型:

默认的话query返回的是一个Map的集合,这里我用List作为这个集合,于是返回的是List<Map>,每个Map对应一行查询结果,比如你查出来有5行数据,就会有5个Map。

对于这个Map而言,它会把查询出来的数据按照<列名称,对应列的值>作为键值对存入Map,每条属性一个键值对。比如我查出来有一条数据是name=sample, status=active,那么对应Map就会存入<name,sample>和<status,active>两个键值对。

然而,spring还提供了一个可扩展的方法mapRow,这个方法可以自定义集合中返回的数据类型,如上文所述,默认返回是Map,但是用户可以自定义,如以下代码:

@Override
     public Object mapRow(ResultSet rs, int rowNum) throws SQLException 
	{
	String s = { rs.getString("name") + " is "+  rs.getString("status") };
     return s;
	}


这样的话我就自定义了结果集数据的返回类型,格式是 name is status 

如果我有两条数据分别是

name = lucien, status = active

name = simon, status = inactive

那么query返回出来的最终结果就是[ "lucien is active", "simon is inactive" ]




评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值