关注JEECG发展历程 关注最新动态和版本, 记录JEECG成长点滴 更新日志 - 技术支持 - 招聘英才

JEECG最新版本下载 JEECG智能开发平台 - 显著提高开发效率 常见问题 - 入门视频 - 参与开源团队

商务QQ: 69893005、418799587 商务热线(5*8小时): 010-64808099 官方邮箱: jeecgos@163.com

查看: 10858|回复: 0

JdbcTemplate的queryForMap方法报错

[复制链接]
发表于 2013-8-25 19:07:23 | 显示全部楼层 |阅读模式
JdbcTemplate的queryForMap方法报错
queryForMap方法使用不当,就会出错,使用方式如下:
The queryForMap method in JdbcTemplate only expects a single row to be returned, The return value for this method will be a map of column names to column values for the single result row.

queryForMap方法返回的结果集大小必须是1,并且返回的map中,以列的名字作为key,获取的值作为value

1
public void test(){

2
String SQL_GET_ATTRIBUTE="select * from test where rownum<1";

3
Map<Object,Object> map=getJdbcTemplate().queryForMap(SQL_GET_ATTRIBUTE);

4
Set<Entry<Object, Object>> entrySet=map.entrySet();

5
for (Entry<Object, Object> entry : entrySet) {

6
System.out.println("key is " + entry.getKey());

7
System.out.println("value is " + entry.getValue());

8
}

9
}




输出会列出test所有字段为key,查询出来的值为vlaue的字符串,这里使用oracle数据库,强制使用“where rownum<1”来限制只返回一行。



利用spring 的getJdbcTemplate().queryForMap如果返回空集,就会报
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0 的异常,解决办法就是捕捉这个异常然后返回null即可。
Java代码  

  • try{  
  •             return getJdbcTemplate().queryForMap("select s.fb,s.pb,s.tu,s.qt,s.fbc,s.pbc,s.tt,s.ft,s.lt from gbc$view_user s where s.ud = ? and ad= ?", new Object[]{ud,ad});  
  •         }catch (EmptyResultDataAccessException e) {  
  •             return null;  
  •         }  






解决方案 在queryForMap的地方 try catch 一下 即可。


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表