连表查询解决字段冲突
连表查询解决字段冲突#
主表#
字段冲突在 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 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本