本站首页    管理页面    写新日志    退出


«July 2020»
1234
567891011
12131415161718
19202122232425
262728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7228495
建立时间:2006年5月29日




[iBatis]解决Ibatis一对多映射n+1问题
软件技术

lhwork 发表于 2008-3-11 16:17:47

存在一对多的逻辑关系,比如视频和视频标签(严格来讲是多对多的关系),目前想取出一些视频和该视频包含的标签,传统的做法往往会存在n+1问题,对性能有些影响在IBatis中如何做?马上进入实战 配置文件如下: <sqlMap namespace="search">500)this.width=500'>        <resultMap id="video-map" class="xx.index.dataset.VideoVO" groupBy="videoId">500)this.width=500'>        <result property="videoId" column="videoId" />500)this.width=500'>         ............................500)this.width=500'>        <result property="tagList" resultMap="search.tag-map" />500)this.width=500'>500)this.width=500'>500)this.width=500'>    </resultMap>500)this.width=500'>    500)this.width=500'>    <resultMap id="tag-map" class="java.util.HashMap">500)this.width=500'>        <result property="tagName" column="tagName" />500)this.width=500'>    </resultMap>500)this.width=500'>     500)this.width=500'>    <statement id="query" resultMap="video-map" parameterClass="xx.index.dataset.DataSetVO" >500)this.width=500'>        select v.videoId as videoId, 500)this.width=500'>             .............500)this.width=500'>               vtg.name as tagname, 500)this.width=500'>              ............500)this.width=500'>               500)this.width=500'>        from video v 500)this.width=500'>        inner join videotagrel vtgrel on v.videoId=vtgrel.videoId500)this.width=500'>        inner join videotag vtg on vtgrel.tagId=vtg.tagId 500)this.width=500'>       ...........500)this.width=500'>            500)this.width=500'>            500)this.width=500'>    </statement>        ........</sqlMap>我们采用多表关联的方式用一个sql取出所有数据,然后定义我们映射规则(见上面的 resultMap段),从规则中可以看出,我们将查出来的结果根据videoId进行分组,然后相同videoId的标签会归入video的tagList,最后你会得到一个 video列表,其中每个video又包含一个相关的标签列表,整个过程一句sql搞定 避免了n+1问题


阅读全文(5760) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.047 second(s), page refreshed 144422210 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号