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,试了几次才发现,应该是现在这样的。
分享到:
相关推荐
- SQL语句使用了JOIN操作连接`MEMBER_POST`和`AUTH_USER`表,通过`CREATED_BY`字段关联,以便获取用户创建的帖子。 4. **IN操作符**: - `IN`操作符被广泛使用,用于检查字段值是否存在于一个列表中。比如,`a....
这段代码展示了如何使用 iBatis 进行多表查询: 1. **查询语句**:从 `MEMBER_POST`、`AUTH_USER` 和 `MEMBER_MEMBER_GROUP_REL` 三个表中选择数据。 2. **条件过滤**:通过 `<dynamic>` 标签实现了动态 SQL,根据...
=#end# group by actionId ``` 此查询语句用于统计`MemberAccessLog`表中某成员在指定时间段内的各个动作的执行次数。`#memberId#`, `#start#`, `#end#`均为动态参数,分别代表成员ID和时间范围的开始与结束。 ##...
group by actionId ``` 这条语句定义了一个名为`com.fashionfree.stat.accesslog.selectActionIdAndActionNumber`的查询操作,其参数类型为`hashMap`。这条SQL语句的作用是从`MemberAccessLog`表中根据成员ID、...
理解子查询、联接(JOIN)、分组(GROUP BY)、排序(ORDER BY)和聚合函数(如COUNT、SUM、AVG、MAX、MIN)的使用。 3. 高级SQL:掌握复杂的查询技巧,如嵌套查询、集合操作(UNION、INTERSECT、EXCEPT)、自连接...
此外,`columnIndex` 不在 `<result>` 标签中使用,`groupBy` 属性已经被废弃。 七、工具的使用 为了帮助开发者完成迁移工作,MyBatis提供了一个工具,可以将iBATIS 2.x sqlmap文件转换为MyBatis 3.x xml mapper...
group by actionId ``` HashMap中的键值对会被映射到SQL语句的条件中。 4. **动态SQL** iBatis支持条件判断,比如`if`、`choose`(`when`、`otherwise`)、`where`、`trim`等标签,使SQL语句更灵活。例如,...
- **分组和聚合**:可以使用SQL的group by和聚合函数如count()进行分组查询。 - **命名查询**:预先在映射文件中定义`<query>`,通过`getNamedQuery()`执行预定义的查询。 - **联接查询**:`join fetch`用于左连接并...
- 分组与排序:支持 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 > avgTable.avgE; ``` 这条SQL语句首先计算每个地区的平均销售额,然后通过内连接将销售表与这些平均值进行比较,找出那些销售额...
6. **SQL统计查询**:使用CASE WHEN THEN语句结合GROUP BY和COUNT函数完成复杂的聚合统计。 7. **火车速度问题**:通过建立数学模型计算火车速度,考虑少年与火车的相对运动。 8. **Oracle语句与存储过程**:掌握DDL...