iBatis终于出了2.0.9,解决了N+1查询问题。

新年新气象,庆祝。待我试用。
 作者给出的这个n+1 select解决方案,是针对一对多的,他认为一对一内联类属性的映射,通过视图select和lazyload,已经可以方便地解决,所以着重解决的是1:M / M:N的问题,我拿jpetstore中的表作为例子,如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">

<sqlMap namespace="Category">
<typeAlias alias="product" type="org.chage.test.ibatis209.Product"/>
<typeAlias alias="category" type="org.chage.test.ibatis209.Category"/>

<resultMap id="categoryResult" class="category" groupBy="categoryId">
    <result property="categoryId" column="CATID"/>
    <result property="name" column="NAME"/>
    <result property="description" column="DESCN"/>
    <result property="productList" resultMap="Category.productResult"/>
</resultMap>

<resultMap id="productResult" class="product">
    <result property="productId" column="PRODUCTID"/>
    <result property="categoryId" column="CATEGORY"/>
    <result property="name" column="NAME"/>
    <result property="description" column="DESCN"/>
</resultMap>

<select id="getAllCategory" resultMap="categoryResult">
   select * from CATEGORY c,product p where c.CATID = p.CATEGORY 
</select>

</sqlMap>

注意两处蓝色的部分. 子属性级的resultMap命名空间一定得加上,不然报错。

另外的几个新特性还没有看,直觉得1:m问题最急,因为这个影响比较大,大家说ibatis都知道有个n+1查询问题悬而未决,心理影响比较大。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值