大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说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