引言
相信开发中大家都遇到过这种情况,select的结果我们想要进行进一步分组。比如我想获得以商品ID跟商品价格进行分组的结果。
{
"goodsId": 1, // (作者注:商品ID)
"price": 1000, // (作者注:商品价格)
"coupons": [
"双十一优惠券",
"立减5块优惠券"
]
}
但通常经过表结合后select的结果会返回2行,不符合我们的格式。我们想要的是以商品ID跟商品价格进行分组。
goods_id price coupons
1 1000 双十一优惠券
1 1000 立减5块优惠券
使用ID标签
那怎么办呢?难道我们要在java中手动分组或者写更加复杂的select句吗?当然不用。mybatis为我们准备了分组功能。即使用ID标签。
<resultMap id="BaseResultMap" type="xxx.xxx.ResultDto">
<!-- id标签表示分组单位 -->
<id property="goodsId" column="goods_id"/>
<id property="price" column="goods_price"/>
<!-- 分组后放入list<String>的变量coupons -->
<collection property="coupons" ofType="string">
<!-- 分组对象列gooods_coupon -->
<result column="gooods_coupon"/>
</collection>
</resultMap>
对应的java bean
public class ResultDto {
/**
* 商品ID
*/
private Integer goodsId;
/**
* 商品价格
*/
private Integer price;
/**
* 商品优惠
*/
private List<String> coupons;
}