zoukankan      html  css  js  c++  java
  • 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语句增加别名 关联的部分也要修改(红色部分为修改的内容)

    问题解决

  • 相关阅读:
    改变JupyterLab的启动路径
    副业创收的误区,为啥你总掉进坑里[转]
    消费主义陷阱[转]
    排列组合生成算法CombinationAll
    nlp跳坑基础
    通俗易懂告诉你CPU/GPU/TPU/NPU...XPU都是些什么鬼?
    Shotcuts in linux terminal for typing commands 各类终端的快捷键
    Python Why?
    2020年15.5以后的QT入坑指南
    PreparedStatement的用法
  • 原文地址:https://www.cnblogs.com/lzy1212/p/13452257.html
Copyright © 2011-2022 走看看