连表查询解决字段冲突

连表查询解决字段冲突#

image-20240227112223399

主表#

字段冲突在 id , age

用点(.) 来指定在字段在那张表里面,防止字段冲突

class 表 (加表名在前面,让sql查询通过 )

 <sql id="Base_Column_List">
      id,class_name,age
  </sql>

  <!-- 改为-->

<sql id="join_Base_Column_List">
        my_class.id,
        my_class.class_name,
        my_class.age
</sql>

附表#

stu表 ( 加别名,才能在对应到resultmap)

  <sql id="Base_Column_List">

    id, stu_name, class_id, age
  </sql>
  <!-- 改为-->

  <sql id="bbbb">
        `stu`.id       as stu_id,
        `stu`.stu_name as stu_stu_name,
        `stu`.class_id as stu_class_id,
        `stu`.age      as stu_age
   </sql>


StuMapper.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="com.example.demomybatisplus.mapper.StuMapper">


    <sql id="bbbb">
        `stu`.id       as stu_id,
        `stu`.stu_name as stu_stu_name,
        `stu`.class_id as stu_class_id,
        `stu`.age      as stu_age
    </sql>

  <resultMap id="BaseResultMap" type="com.example.demomybatisplus.module.Stu">
    <!--@mbg.generated-->
    <!--@Table yogurt.stu-->
    <id column="id" jdbcType="VARCHAR" property="stuId" />
    <result column="stu_name" jdbcType="VARCHAR" property="stuName" />
    <result column="class_id" jdbcType="VARCHAR" property="classId" />
    <result column="age" jdbcType="VARCHAR" property="age" />
  </resultMap>





</mapper>

MyClassMapper.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="com.example.demomybatisplus.mapper.MyClassMapper">



    <resultMap id="BaseResultMap" type="com.example.demomybatisplus.module.MyClass">
        <!--@mbg.generated-->
        <!--@Table yogurt.my_class-->
        <id column="id" property="id"/>
        <result column="class_name" property="className"/>
        <result column="age" property="age"/>
    </resultMap>


    <!--结果对象映射 加前缀  columnPrefix="stu_"-->
    <resultMap extends="BaseResultMap" id="MyClassResultMap" type="com.example.demomybatisplus.module.MyClass">

        <collection ofType="com.example.demomybatisplus.module.Stu"  columnPrefix="stu_" property="stus"
                    resultMap="com.example.demomybatisplus.mapper.StuMapper.BaseResultMap">
        </collection>
    </resultMap>



    <sql id="join_Base_Column_List">
        my_class.id,
        my_class.class_name,
        my_class.age
    </sql>







    <select id="findById" resultMap="MyClassResultMap">
        select
        <include refid="join_Base_Column_List"/>,
        <include refid="com.example.demomybatisplus.mapper.StuMapper.bbbb"/>
        from my_class
        left join stu on stu.class_id = my_class.id
    </select>
</mapper>

作者:Esofar

出处:https://www.cnblogs.com/firsthelloworld/p/17901077.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   我不想学编丿程  阅读(36)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示