ibatIS中返回结果map 并使用list获取
2013-04-12 15:52
330 查看
ibatis作为一个轻量级的orm工具现在非常流行,我在使用中发现,有时仅仅希望返回一个类型为map的list就可以了,
比如简单的查询统计之类的,没有必要定义太多的pojo,因此想能不能在ibatis中直接传入sql语句来执行,然后返回map呢?
从网上搜了一下, 还真有,实验成功后总结一下,大家共同进步。
其实很简单,就是在配置文件中添加以下的配置,
先在有两种方法实现动态的传入sql,然后返回List<Map<String,Object>>类型的数据。
第一种:如下
注意以上配置中的 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);
比如简单的查询统计之类的,没有必要定义太多的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);
相关文章推荐
- ibatIS中返回结果map 并使用list获取
- 【iBatis】使用resultMap配置返回结果时报错“列名无效”
- mybatis学习之查询结果返回List以及Map
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值 .
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值
- 使用java传参调用exe并且获取程序进度和返回结果的一种方法
- 使用EL表达式分别获取 某个 web 域 中的对象,访问 javabean 的属性、访问 list 集合、访问 map 集合、访问数组
- List<Map<String,Object>>使用Java代码遍历以获取String,Object的值
- ibatis 查询返回结果为map
- Hibernate createSQLQuery list 返回结果转成Map的方法
- 在一个有返回值的方法里使用了子线程,如何返回子线程中的值,如下代码中,我在子线程获取到了address的值,但是这个方法的返回结果是空,该如何解决?
- 获取Executor提交的并发执行的任务返回结果的两种方式/ExecutorCompletionService使用
- ibatis中直执行sql,返回存储Map的List类型
- hibernate下使用getHibernateTemplate 返回List<Map>
- C#使用BeginInvoke和EndInvoke异步下载和获取返回结果
- 使用java传参调用exe并且获取程序进度和返回结果的一种方法
- list中remove的使用方法及返回结果的不同
- Ibatis使用Map作为映射结果,进行多表连接查询
- 在hibernate中查询使用List,Map和类对象定制返回类型
- 解决在 使用 AjaxFileUploder 插件时,不能获取返回的 json 结果数据