您的位置:首页 > 其它

ibatIS中返回结果map 并使用list获取

2013-04-12 15:52 330 查看
ibatis作为一个轻量级的orm工具现在非常流行,我在使用中发现,有时仅仅希望返回一个类型为map的list就可以了,

比如简单的查询统计之类的,没有必要定义太多的pojo,因此想能不能在ibatis中直接传入sql语句来执行,然后返回map呢?

从网上搜了一下, 还真有,实验成功后总结一下,大家共同进步。

其实很简单,就是在配置文件中添加以下的配置,

先在有两种方法实现动态的传入sql,然后返回List<Map<String,Object>>类型的数据。

第一种:如下

<!-- 测试Sql -->
  <select id="sqlQuery" parameterClass="java.lang.String" resultClass="java.util.HashMap" remapResults="true">
    <![CDATA[
    $sql$
    ]]>
  </select><select id="getMapList" remapResults="true" resultClass="java.util.HashMap" >
  <![CDATA[
   select ID,USERNAME,PASSWORD,CREATETIME from Account
  ]]>
 </select>


注意以上配置中的 remapResults="true",之前就因为没有加这个参数,导致使用不的sql查询时出错的问题。

使用方法就更简单了,拼好sql语句后,调用

sqlMapper.queryForList("sqlQuery", sql)就得到了查询结果,

当然这个结果为List,并且list中的元素为Map类型,循环List,就得到查询明细。

以上方法对 于分类汇总类的查询统计功能尤其实用。如果只是count()的话,就取List的第一个元素就行了。

我们可以把这个方法抽出来写到一个util类中,方法如下
publicstaticList
queryForList(String
sql){

List
rtn=null;

try{


rtn = sqlMapper.queryForList("sqlQuery",
sql);

}catch(SQLException
sqle){


sqle.printStackTrace();

}

return
rtn;

}

@SuppressWarnings("unchecked")

@Override

publicList<?>
getMapList(){

List<?>
list =newArrayList();

try{

list=
getSqlMapClientTemplate().queryForList(namespace+".getMapList");

}catch(Exception
e){

System.out.println(namespace+".getMapList()异常!"

+
e.getMessage());

}

return
list;

}

第二种:

在spring + ibatis 结构当中:

语句:

List<Map<String, Object>> list = super.jt.queryForList(sql);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐