xml文件
<resultMap id="BaseResultMapAndStep" type="com.printsky.tms.conanholmes.model.entity.diagnose.DiagnoseModelEntity" >
<constructor >
<idArg column="dm.id" jdbcType="BIGINT" javaType="java.lang.Long" />
<arg column="dm.name" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="dm.valid" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="dm.type" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="dm.diagnoseExtend" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="dm.createtor" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="dm.operator" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="dm.createTime" jdbcType="TIMESTAMP" javaType="java.util.Date" />
<arg column="dm.updateTime" jdbcType="TIMESTAMP" javaType="java.util.Date" />
</constructor>
<collection property="steps" ofType="com.printsky.tms.conanholmes.model.entity.diagnose.DiagnoseStepEntity" javaType="ArrayList">
<constructor >
<idArg column="ds.id" jdbcType="BIGINT" javaType="java.lang.Long" />
<arg column="ds.name" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="ds.dmId" jdbcType="BIGINT" javaType="java.lang.Long" />
<arg column="ds.dmChildId" jdbcType="BIGINT" javaType="java.lang.Long" />
<arg column="ds.step" jdbcType="INTEGER" javaType="java.lang.Integer" />
<arg column="ds.dnId" jdbcType="BIGINT" javaType="java.lang.Long" />
<arg column="ds.createtor" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="ds.operator" jdbcType="VARCHAR" javaType="java.lang.String" />
<arg column="ds.createTime" jdbcType="TIMESTAMP" javaType="java.util.Date" />
<arg column="ds.updateTime" jdbcType="TIMESTAMP" javaType="java.util.Date" />
</constructor>
</collection>
</resultMap>
<select id="selectByParam" resultMap="BaseResultMapAndStep" parameterType="com.printsky.tms.conanholmes.model.entity.diagnose.DiagnoseModelEntity" >
select
dm.id , dm.name, dm.valid, dm.type, dm.diagnoseExtend, dm.createtor, dm.operator, dm.createTime, dm.updateTime,
ds.id, ds.name, ds.dmId, ds.dmChildId, ds.step, ds.dnId,ds.createtor, ds.operator, ds.createTime, ds.updateTime
from diagnose_model dm,diagnose_step ds
where dm.id = ds.dmId
</select>
数据库中 主表有一条数据 子表有两条数据
期望结果是查询到一条数据 结果中有个steps 字段的size为2
实际结果是 返回了2条数据 且每条数据中steps字段size为1 分别为子表中一条记录
解决方法:
给主表的主键的 返回字段起个别名 也就是 dm.id as id

在MyBatis中遇到一个问题,当进行关联查询时,预期应该返回一条数据,其中包含子表的两条记录,但实际返回了两条主表数据,每条数据的子表关联字段steps只包含子表的一条记录。解决方法是在主表的主键字段上设置别名,例如dm.id as id,以此避免查询结果的错误分组。
3215

被折叠的 条评论
为什么被折叠?



