myBatis一对多聚合查询问题记录
项目场景:
mybatis一对多聚合查询,这个老生常谈了,大家都会用,这里记录一下一个小问题吧,这个正常使用一般不会遇到,遇到了也不会有异常信息,查询正常,但是数据不正确。本该返回1:N数据 ,实际一直返回1:1
配置
bean:
Nclass { int cId; String className; String grade; } Students { int sId; int cId; String stuName; String stuAge; } <resultMap type="Nclass" id="NclassBO"> <id property="cId" column="cId" /> <result property="className" column="className" /> <result property="grade" column="grade" /> <collection property="stuList" ofType="Students" javaType="java.util.List"> <id property="sId" column="sId"/> <!-- 关键 没有sId(注意是字段),<id> 标签写为<result> 均会导致查询的数据为1:1 --> <result property="cId" column="cId" /> <result property="stuName" column="stuName" /> <result property="stuAge" column="stuAge" /> </collection> </resultMap>
原因分析:
mybatis一对多关联查询需要使用关联字段(主表主键)以及子表主键,且需要使用标签标识,mybatis会使用此字段做数据归并。 在一些情况下,因为有些时候用不上id字段,没有将该字段查询或没有配置标签, 导致数据查询不正常,却找不到缘由
上一篇:
通过多线程提高代码的执行效率例子
下一篇:
Maven环境及其相关配置