`
123003473
  • 浏览: 1061191 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

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

 
阅读更多
ibatis作为一个轻量级的orm工具现在非常流行,我在使用中发现,有时仅仅希望返回一个类型为map的list就可以了,
比如简单的查询统计之类的,没有必要定义太多的pojo,因此想能不能在ibatis中直接传入sql语句来执行,然后返回map呢?
从网上搜了一下, 还真有,实验成功后总结一下,大家共同进步。

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

<!-- 测试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类中,方法如下
  

public static List queryForList(String sql){
        List rtn = null;
        try{
            rtn = sqlMapper.queryForList("sqlQuery", sql);
        }catch(SQLException sqle){
            sqle.printStackTrace();
        }
        return rtn;
    }

@SuppressWarnings("unchecked")
@Override
public List<?> getMapList() {
  List<?> list = new ArrayList();
  try {
   list = getSqlMapClientTemplate().queryForList(namespace + ".getMapList");
  } catch (Exception e) {
   System.out.println(namespace + ".getMapList()异常!"
   + e.getMessage());
  }
  return list;
}



   这样用的用法省去很多代码,不需要在声明实体类,直接使用map作为实体类来看,大家可以试试看
分享到:
评论

相关推荐

    Ibatis资料ibatai sql map iBATIS使用$和#的一些理解

    在使用iBATIS(现已被MyBatis取代)进行数据库操作时,我们常常需要传递参数到SQL语句中。在iBATIS中,有两种主要的方式来处理这些参数:使用`$`和`#`。这两种方式在不同的场景下有不同的效果。 首先,让我们来看看...

    ibatis中iterate的例子

    在iBatis中,`&lt;iterate&gt;`标签是一个非常实用的功能,它允许我们处理集合数据,如数组、List或Map等,进行循环遍历并生成动态SQL语句。下面我们将详细探讨`&lt;iterate&gt;`标签的用法及其示例。 `&lt;iterate&gt;`标签的主要...

    ibatis入门与ibatis迭代的用法

    4. **动态SQL**:iBatis支持动态SQL,可以在XML中使用if、choose、when、otherwise等标签实现条件判断。 5. **使用SqlSession**:在Java代码中,通过SqlSessionFactory创建SqlSession对象,然后通过SqlSession执行...

    ibatis 用HashMap解决resultClass映射

    在 ibatis 中,可以使用 `&lt;select&gt;` 元素来定义 SQL 查询,并通过 `resultClass` 属性指定结果集的类型。为了使查询结果能够适应变化的列名和列数,我们需要设置 `remapResults` 属性为 `true`。 ```xml &lt;!-- ...

    ibatis list

    `&lt;update id="updateUsersIterate" parameterClass="java.util.Map"&gt;`示例展示了如何根据`list`集合中的ID值批量更新`users`表中的`user_name`字段。注意,这里的`parameterClass`被设置为`java.util.Map`,这意味着...

    ibatis使用及环境搭建文档

    4. **SqlSession**: Ibatis的工作核心,用于执行SQL语句并获取结果。 **环境搭建** 在Eclipse或MyEclipse中搭建Ibatis开发环境主要涉及以下步骤: 1. **添加依赖**: 首先需要在项目中引入Ibatis的JAR包或者通过...

    ibatis多对多关系(详细)

    iBatis多对多关系详解 iBatis是一种流行的持久层框架,用于简化Java应用程序...我们使用了三个数据库表来存储学生和教师之间的多对多关系,并使用iBatis来映射数据库表和Java对象。最后,我们实现了DAO来访问数据库。

    Ibatis

    Ibatis 的一大亮点是支持动态 SQL,开发者可以在 SQL 映射文件中使用条件判断、循环等结构,使得 SQL 语句能够根据传入参数的不同而变化。 **4. MyBatis vs Ibatis** 尽管 Ibatis 在后期演进成了 MyBatis,两者在...

    JQuery的启发-教你如何二次处理及优化IBatis和Hibernate的查询结果集

    对于Hibernate,我们可以使用`Criteria` API或`HQL`(Hibernate查询语言)进行查询,然后将返回的结果集包装到`ResultWrapper`中进行后续处理。 此外,我们还可以参考JQuery的延迟加载(lazy loading)概念,以优化...

    ibatis3.0中in的用法

    #### 四、ibatis3.0中使用`IN`的关键元素——`&lt;foreach&gt;` 在ibatis3.0中,为了实现动态SQL的功能,引入了`&lt;foreach&gt;`标签来处理集合数据。下面详细介绍`&lt;foreach&gt;`标签的属性及其用法: 1. **`item`**: 表示当前...

    ibatis应对批量update

    final List&lt;Map, Object&gt;&gt; tempList = list; try { if (list != null && !list.isEmpty()) { getSqlMapClientTemplate().execute( new SqlMapClientCallback() { @Override public Object doInSqlMapClient...

    IBatis简单使用

    2. **动态SQL**: IBatis支持动态SQL,这意味着开发者可以在SQL语句中根据条件自由拼接,无需在代码中进行复杂的字符串拼接。 3. **结果映射**: IBatis可以自动将查询结果映射到Java对象,也可以自定义映射规则,...

    ibatis实现分页技术

    // 创建并返回分页结果对象 PageResult&lt;YourEntity&gt; pageResult = new PageResult(params.get("pageNumber").toString(), params.get("pageSize").toString(), total, entities); return pageResult; } } ``` 5...

    ibatis 之分页

    本文将深入探讨Ibatis实现分页的相关知识点,并基于提供的标签“源码”和“工具”,分享如何在实际项目中运用Ibatis进行分页处理。 首先,了解Ibatis的基本概念。Ibatis是由Apache基金会维护的一个开源项目,它是一...

    ibatis教程 输入参数详解

    部分内容:这段部分提供了ibatis用户指南的警告,关于从文档复制代码的问题,以及ibatis的概述、如何开始使用ibatis、构建SqlSessionFactory的方法(包括通过XML和不使用XML的方式)、获取SqlSession的过程、探索...

    iBATIS 三个版对比

    - **iBATIS v3**:采用了新的标签`&lt;mappers&gt;`,并在其中使用`&lt;mapper resource=".../&gt;`来引用映射文件。 这一改变使得iBATIS v3能够更灵活地处理多个映射文件,同时也增强了框架的可扩展性。 #### sqlMap 映射中...

    IBATIS建立的数据库连接

    5. **执行SQL**: 在服务实现类中,使用`SqlSession`的`selectOne`、`selectList`、`insert`、`update`或`delete`方法执行SQL,并处理返回的结果。 **C#与IBATIS** 虽然原生的IBATIS是为Java设计的,但C#也有类似的...

    Ibatis调用Oracle存储过程返回自定义类型

    本文将深入探讨如何使用Ibatis框架来调用Oracle数据库中的存储过程,并实现返回自定义类型的处理方法。 #### Oracle自定义类型简介 Oracle支持用户自定义数据类型,这为复杂数据结构的应用提供了极大的便利。...

    IBatis常用操作封装

    在`IBatisDao.java`中,可能会有一个`selectList()`方法返回一个对象列表: ```java List&lt;User&gt; selectUsers(); ``` 4. **动态SQL**:`IBatis`的动态SQL功能非常强大,可以在映射文件中编写条件语句,如`if`, `...

Global site tag (gtag.js) - Google Analytics