0 0

在ibatis中使用一对多的问题,搜了很久没有解决,望高手告知 5

目前我们有一项目使用ibatis,在解决一对多问题时采用了groupBy的方法,例子如下:
但问题是由于使用了left join,当CATEGORY 中有一条记录在PRODUCT没有关联记录时必须为productResult中的属性设置nullValue,并且productList中会有一个对象,对象里是空值。我希望出现这种情况时,productList就为空。或者size为0,这样如何处理?谢谢!

<sqlMap namespace="ProductCategory"> 
<resultMap id=”categoryResult” class=”com.ibatis.example.Category” groupBy=”id”> 
<result property=”id” column=”CAT_ID”/> 
<result property=”description” column=”CAT_DESCRIPTION”/> 
<result property=”productList” resultMap=”ProductCategory.productResult”/> 
</resultMap> 
<resultMap id=”productResult” class=”com.ibatis.example.Product”> 
<result property=”id” column=”PRD_ID”/> 
<result property=”description” column=”PRD_DESCRIPTION”/> 
</resultMap> 
<select id=”getCategory” parameterClass=”int” resultMap=”categoryResult”> 
select C.CAT_ID, C.CAT_DESCRIPTION, P.PRD_ID, P.PRD_DESCRIPTION 
from CATEGORY C 
left join PRODUCT P 
on C.CAT_ID = P.PRD_CAT_ID 
where CAT_ID = #value# 
</select> 
</sqlMap>
2008年7月31日 19:59

4个答案 按时间排序 按投票排序

0 0

不懂的别瞎评论

2013年11月29日 16:09
0 0

空值 应该是正常的
因为left join 没关联到记录 所以主表有记录 子表各字段为null
相当于取出一条全为NULL的记录

2008年8月09日 08:42
0 0


感觉好复杂,一对多的关系,用两条SQL语句不就可以了吗?


为什么要将MAP之间的关系!

2008年8月07日 17:38
0 0

取出来以后自己判断,把为空的都删掉
另外你这种写法我第一回看到,研究一下你的逻辑,看看是不是有更好的解决方法

2008年7月31日 21:37

相关推荐

Global site tag (gtag.js) - Google Analytics