ibatIS中返回结果map 并使用list获取
原文出处:http://xiaoliang.556688.blog.163.com/blog/static/1145561892012102255520567/
ibatis作为一个轻量级的orm工具现在非常流行,我在使用中发现,有时仅仅希望返回一个类型为map的list就可以了,
比如简单的查询统计之类的,没有必要定义太多的pojo,因此想能不能在ibatis中直接传入sql语句来执行,然后返回map呢?
从网上搜了一下, 还真有,实验成功后总结一下,大家共同进步。
其实很简单,就是在配置文件中添加以下的配置,
$sql$
]]>
select ID,USERNAME,PASSWORD,CREATETIME from Account
]]>
注意以上配置中的 remapResults="true",之前就因为没有加这个参数,导致使用不的sql查询时出错的问题。
使用方法就更简单了,拼好sql语句后,调用
sqlMapper.queryForList("sqlQuery", sql)就得到了查询结果,
当然这个结果为List,并且list中的元素为Map类型,循环List,就得到查询明细。
以上方法对 于分类汇总类的查询统计功能尤其实用。如果只是count()的话,就取List的第一个元素就行了。
我们可以把这个方法抽出来写到一个util类中,方法如下
publicstaticListqueryForList(Stringsql){
Listrtn=null;
try{
rtn=sqlMapper.queryForList("sqlQuery",sql);
}catch(SQLExceptionsqle){
sqle.printStackTrace();
}
returnrtn;
}
@SuppressWarnings("unchecked")
@Override
publicList>getMapList(){
List>list=newArrayList();
try{
list=getSqlMapClientTemplate().queryForList(namespace+".getMapList");
}catch(Exceptione){
System.out.println(namespace+".getMapList()异常!"
+e.getMessage());
}
returnlist;
}
这样用的用法省去很多代码,不需要在声明实体类,直接使用map作为实体类来看,大家可以试试看