1. 程式人生 > 實用技巧 >mybatis關聯查詢時 兩張表有相同欄位導致對映錯誤

mybatis關聯查詢時 兩張表有相同欄位導致對映錯誤

表1

表2

兩張表都存在name欄位

xml中的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="cn.liziy.dao.StudentDao">
<!-- 根據id查詢學生資訊, 多表連線使用resultMap -->
    <select id="selectAllStu" resultMap="studentResultMap">
        SELECT
                s.id,
                s.name,
                s.sex,
                s.age,
                class_id,
                c.id ,
                c.code,
                c.name
        FROM tb_student s
        LEFT JOIN tb_class c ON class_id 
= c.id </select> <!-- 對映Student物件的resultMap --> <resultMap id="studentResultMap" type="cn.liziy.entity.Student"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="sex" column="sex"/> <result property="age" column="age"/> <!-- 多對一關聯:association --> <association property="clazz" javaType="cn.liziy.entity.Clazz"> <id property="id" column="id"/> <result property="code" column="code"/> <result property="name" column="name"/> </association> </resultMap> </mapper>

控制檯的輸出

頁面的json資料

clazz-name的值錯誤了

解決方法

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="cn.liziy.dao.StudentDao">
<!-- 根據id查詢學生資訊, 多表連線使用resultMap -->
    <select id="selectAllStu" resultMap="studentResultMap">
        SELECT
                s.id,
                s.name,
                s.sex,
                s.age,
                class_id,
                c.id cid,
c.code, c.name cname FROM tb_student s LEFT JOIN tb_class c ON class_id
= c.id </select> <!-- 對映Student物件的resultMap --> <resultMap id="studentResultMap" type="cn.liziy.entity.Student"> <id property="id" column="id"/> <result property="name" column="name"/> <result property="sex" column="sex"/> <result property="age" column="age"/> <!-- 多對一關聯:association --> <association property="clazz" javaType="cn.liziy.entity.Clazz"> <id property="id" column="cid"/> <result property="code" column="code"/> <result property="name" column="cname"/> </association> </resultMap> </mapper>

為SQL語句增加別名 關聯的部分也要修改(紅色部分為修改的內容)

問題解決