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">
<!-- 查詢所有學生信息, 多表連接使用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">
<!-- 查詢所有學生信息, 多表連接使用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語句增加別名 關聯的部分也要修改(紅色部分為修改的內容)

問題解決

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM