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字段,没有将该字段查询或没有配置标签, 导致数据查询不正常,却找不到缘由

经验分享 程序员 微信小程序 职场和发展