`

ibatis 的 GroupBy属性的使用

 
阅读更多

ibatis的groupby的用处很多,比如把数据展示成树结构,目录结构等等。

ibatis的使用方法:

定义一个 resultMap,如下。

<resultMap id="SpreadGroupByPackageID" class="TChannelProduct"   
       groupBy="productId,channelId

"> 
       
        <result property="productId" column="productId"

 />
        <result property="channelId" column="channelId

" />
  
        <result property="channelProductlist" resultMap="cn.emag.product.domain.TChannelProduct.subchannelProduct

" />  
    </resultMap>  

还有一个一个resultMap,内容如下:

<resultMap id="subchannelProduct

" class="TChannelProduct">  
        <result property="id" column="id" />
        <result property="spreadStartTime" column="spreadStartTime" />
        <result property="spreadEndTime" column="spreadEndTime" />
        <result property="productPageUrl" column="productPageUrl" />
        <result property="productTargetUrl" column="productTargetUrl" />
        <result property="isReferValid" column="isReferValid" />
        <result property="businessMdId" column="businessMdId" />
        <result property="bcidCode" column="bcidCode" />
        <result property="productType" column="productType" />
        <result property="balanceChannelId" column="balanceChannelId" />
        <result property="businessMdName" column="businessMdName" />
        <result property="businessMdCode" column="businessMdCode" />
        <result property="productId" column="productId" />
        <result property="channelId" column="channelId" />
        <result property="spreadState" column="spreadState" />
        <result property="channelName" column="channelName" />
        <result property="channelCorpType" column="channelCorpType" />
        <result property="companyCode" column="companyCode" />
        <result property="companyName" column="companyName" />
    </resultMap> 
 

 

sql内容:

<select id="findSpreadGroupByPackageID" parameterClass="map" resultMap="SpreadGroupByPackageID">
select
cp.id  as id,
cp.spread_start_time as spreadStartTime,
cp.spread_end_time   as spreadEndTime,
cp.product_page_url as productPageUrl,
cp.Product_Target_Url  AS productTargetUrl,
cp.is_refer_valid as isReferValid,
cp.business_md_id as businessMdId,
CP.Bcid_Code AS bcidCode,
cp.product_type AS productType,
cp.balance_channel_id AS balanceChannelId,
bu.business_model_name as businessMdName,
bu.business_model_code as businessMdCode,
CP.PACKAGE_ID AS PRODUCTID

,
cp.channel_id as channelId

,
cp.SPREAD_STATE as spreadState,
ci.channel_name  as channelName,
ci.CHANNEL_CORP_TYPE as channelCorpType,
cc.company_code  as companyCode,
cc.company_name_cn as companyName
from T_CHANNEL_PRODUCT_REF cp,
     t_channel_info   ci,
     t_channel_corp   cc,
     t_channel_busi_model bu
where cp.channel_id = ci.id and ci.corp_id = cc.company_code and  cp.business_md_id = bu.id and cp.Spread_State <![CDATA[<>]]> 2 
	</select>

 实现的效果是,将同packageid同channelid的数据放到同一个list中去。

因为已packageid同channelid分组,所以,虽然 值需要获得list中数据,但是resultMap中叶需要将packageid和channelid加上去,否则没有任何效果。。。。,即上文中,红字部分 一定要注意,不要搞丢了。

事实上分组的实现不是在数据库中实现,而是查出所有数据后,在ibatis的代码中进行的实现,所以,如果需要进行分页查询。。。那就只能ibatis分组处理后,查出所需数据,然后对所有数据在代码中分组了。悲催。。。

看了 好几个帖子,搜索相关的实现,好多贴中groupby的resultMap中,都没有分组的那个数据的property,试了几次才发现,应该是现在这样的。

分享到:
评论

相关推荐

    Ibatis复杂查询语句.doc

    - SQL语句使用了JOIN操作连接`MEMBER_POST`和`AUTH_USER`表,通过`CREATED_BY`字段关联,以便获取用户创建的帖子。 4. **IN操作符**: - `IN`操作符被广泛使用,用于检查字段值是否存在于一个列表中。比如,`a....

    Ibatis查询语句里,可以使用多表查询

    这段代码展示了如何使用 iBatis 进行多表查询: 1. **查询语句**:从 `MEMBER_POST`、`AUTH_USER` 和 `MEMBER_MEMBER_GROUP_REL` 三个表中选择数据。 2. **条件过滤**:通过 `&lt;dynamic&gt;` 标签实现了动态 SQL,根据...

    Ibatis常用sql语句

    =#end# group by actionId ``` 此查询语句用于统计`MemberAccessLog`表中某成员在指定时间段内的各个动作的执行次数。`#memberId#`, `#start#`, `#end#`均为动态参数,分别代表成员ID和时间范围的开始与结束。 ##...

    ibatis常用的sql

    group by actionId ``` 这条语句定义了一个名为`com.fashionfree.stat.accesslog.selectActionIdAndActionNumber`的查询操作,其参数类型为`hashMap`。这条SQL语句的作用是从`MemberAccessLog`表中根据成员ID、...

    SQL&Ibatis学习 ppt

    理解子查询、联接(JOIN)、分组(GROUP BY)、排序(ORDER BY)和聚合函数(如COUNT、SUM、AVG、MAX、MIN)的使用。 3. 高级SQL:掌握复杂的查询技巧,如嵌套查询、集合操作(UNION、INTERSECT、EXCEPT)、自连接...

    ibatis迁移到mybatis3的注意事项

    此外,`columnIndex` 不在 `&lt;result&gt;` 标签中使用,`groupBy` 属性已经被废弃。 七、工具的使用 为了帮助开发者完成迁移工作,MyBatis提供了一个工具,可以将iBATIS 2.x sqlmap文件转换为MyBatis 3.x xml mapper...

    iBatis习惯用的16条SQL语句

    group by actionId ``` HashMap中的键值对会被映射到SQL语句的条件中。 4. **动态SQL** iBatis支持条件判断,比如`if`、`choose`(`when`、`otherwise`)、`where`、`trim`等标签,使SQL语句更灵活。例如,...

    hibernate_问题详解

    - **分组和聚合**:可以使用SQL的group by和聚合函数如count()进行分组查询。 - **命名查询**:预先在映射文件中定义`&lt;query&gt;`,通过`getNamedQuery()`执行预定义的查询。 - **联接查询**:`join fetch`用于左连接并...

    Hibernate知识整理.doc

    - 分组与排序:支持 GROUP BY 和 ORDER BY 子句,进行聚合和排序操作。 - 联合查询:可以进行多个实体间的关联查询。 9- Hibernate 手动配置: 手动配置 Hibernate 包括设置配置文件、定义实体类、编写映射文件、...

    北京神州数码斯特奇面试

    1. 使用 SQL 语句(如 GROUP BY 和 HAVING 子句)找出重复的记录。 2. 通过 DELETE 语句结合子查询删除多余的记录。 #### JSP 内置对象 JSP (JavaServer Pages) 提供了九个内置对象,这些对象可以帮助开发者简化 ...

    开发人员结构化面试大纲

    GROUP BY region ) AS avgTable ON s.region = avgTable.region WHERE s.total &gt; avgTable.avgE; ``` 这条SQL语句首先计算每个地区的平均销售额,然后通过内连接将销售表与这些平均值进行比较,找出那些销售额...

    java高级软件工程师面试题

    6. **SQL统计查询**:使用CASE WHEN THEN语句结合GROUP BY和COUNT函数完成复杂的聚合统计。 7. **火车速度问题**:通过建立数学模型计算火车速度,考虑少年与火车的相对运动。 8. **Oracle语句与存储过程**:掌握DDL...

Global site tag (gtag.js) - Google Analytics