MyBatis操作问题汇总

关联表存在相同名字段问题

问题来源

当存在相同字段时,例如 Patents 表和 Employees 表都具有 name 字段,那么关联查询结果 Employees.name 字段值将被 Patents.name 覆盖

解决方案

总的来说就是设置查询出的列表别名,然后在 resultMap 中修改对应字段 column 为刚设置的别名;

img

img

Mapper.xml
<resultMap type="Patents" id="PatentsResult">
<result property="id" column="id" />
<result property="patentsCode" column="patents_code" />
<result property="code" column="code" />
<result property="name" column="pat_name" />
<result property="projectCode" column="project_code" />
<result property="projectName" column="project_name" />
<result property="level" column="level" />
...
<result property="employeeCode" column="employee_code" />
<association property="employees" column="id" javaType="Employees" resultMap="EmployeesResult" />
</resultMap>

<resultMap type="Employees" id="EmployeesResult">
<result property="id" column="id" />
<result property="employeeCode" column="employee_code" />
<result property="name" column="name" />
</resultMap>

注意:查询方法中所有涉及重名的字段(包括 id 字段)都应该设置字段别名,同时在 resultMap 中设置 column 为刚设置的相应别名。