MyBatisPlus中关联查询时通用SQL中的include标签添加别名

MyBatisPlus中关联查询时通用SQL中的include标签添加别名问题 在MyBatisPlus中要使用到关联查询时,如果查询的主表字段不使用别名,会出现异常: Column 'id' in field list is ambiguous 原因…

MyBatisPlus中关联查询时通用SQL中的include标签添加别名

问题

  • 在MyBatisPlus中要使用到关联查询时,如果查询的主表字段不使用别名,会出现异常:
Column "id" in field list is ambiguous

原因

  • 列ID在字段列表中重复,其实就是两张表有相同的字段,但是使用时表字段的名称前没有加表名,导致指代不明,前面加上前缀别名就没问题

新问题

  • 由于xml中已经用SQL封装好通用结果列,引用结果列方法:
 <include refid="Base_Column_List"></include>
  • 那么,如何给<include>结果列添加别名呢?

解决办法

方法一

  • 在定义结果列的SQL语句中为使用了相同表字段的字段添加别名
  • 这样之后使用include标签引用时就是带别名引用

方法二

  • 使用include标签的property属性,为include标签中的字段添加别名
  • 使用 ${ } 占位符参数化的,占位符也可以被用在refid 属性里.不可以使用 #{ }
  • 此处的参数不是调用时传进来的,不同的属性值通过包含的实例而变化
<sql id="userColumns"> 
	${alias}.id,
	username,
	password 
</sql>


<select id="selectUsers" resultType="map">
  select
    <include refid="userColumns"><property name="alias" value="t1"/></include>,
    <include refid="userColumns"><property name="alias" value="t2"/></include>
  from some_table t1
    cross join some_table t2
</select>

总结

  • 在mybatis的定义中 ,sql标签节点是用来定义可重用的SQL代码段
  • 可使用include标签节点来包含在其它语句里
  • 在include标签中可以使用property标签,将属性包含进来

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/6316.html

(0)
上一篇 2023-04-12
下一篇 2023-04-12

相关推荐

  • Linux 上安装 PostgreSQL

    Linux 上安装 PostgreSQL 打开 PostgreSQL 官网 https://www.postgresql.org/,点击菜单栏上的 Download ,可以看到这里包含了很多平台的安装包,包括 Linux、Windo…

    2023-03-28
    141
  • ORA-014452 删除表时报错「终于解决」

    ORA-014452 删除表时报错「终于解决」原因:简单来说就是你正在操作的该临时表还在被其他会话占用,导致无法删除。 解决步骤: 找出被哪些会话占用,将该会话的进程杀掉就可以了。 先从DBA_OBJECTS/ALL_OBJECTS /USER…

    2023-02-27
    137
  • Treeview结构的表资料复制(Treeview Table COPY)

    Treeview结构的表资料复制(Treeview Table COPY)用ID/ParentID设计的Treeview结构表,若需要复制一份完整的Treeview, 要用逻辑代码递归实现,处理id/pid有点麻烦,性能也不好, 若可用简单的几句SQL实现,则可以提高性能…

    2023-04-14
    172
  • 【数据库】Oracle -[亲测有效]

    【数据库】Oracle -[亲测有效]1.Oracle数据库安装 1.1.整合PL/SQL Developer软件 1.点击Tools—>Preferences—>Connection连接,填写连接信息: 2.连接Oracle

    2023-04-15
    154
  • Python自动化脚本

    Python自动化脚本Python自动化脚本是现在互联网行业中非常流行的一种技术,在现代化的建站工程中,Python自动化脚本可谓是“万能钥匙”。Python自动化脚本可以实现从网站信息搜集、网页爬虫、数据挖掘到自动化测试,不仅可以提高工程师开发效率,而且还可以减少人工操作,节省人力成本。

    2024-06-14
    45
  • 三种不同方式,让你的荣耀锐龙版笔记本轻松激活

    三种不同方式,让你的荣耀锐龙版笔记本轻松激活     荣耀作为近来大火的品牌,越来越多的朋友都用起了荣耀品牌的PC产品,而荣耀锐龙版笔记本毫无疑问的成为了办公人士的首选。但是一些对Linux系统或是Windows系统不满足而重装了其他系统的朋…

    2022-12-24
    308
  • 关于学习在python中使用进度条的信息

    关于学习在python中使用进度条的信息首先要明白一点进度条都属于图形界面,需要选择图形界面的模块,我自己学的tkinter,pygame,pyqt5

    2023-10-25
    111
  • 利用python实现开方运算

    利用python实现开方运算开方运算是高中数学中不可避免的知识点,其也是计算机科学中的常用功能之一。如何使用python来实现开方运算呢?本文将从多个方面详细介绍这个问题。

    2024-05-27
    57

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注