MyBatis联表查询时,主查询表的字段怎么统一加别名(通用方案

2023-08-27  本文已影响0人  王月亮17

一般来说,MyBatis生成的xml sql文件中,会有一个Base_Column_List,方便查询时直接引用。如下:

select
<include refid="Base_Column_List" />
from tbl_product
where id = id

可是有时候需要联表查询,这时候如果依然这样写显然是不行的,两个表很可能有许多相同的字段,这时候就需要给查询的字段加上表名:

select
tp.id, tp.name, tp....
from tbl_product tp 
left join tbl_mall tm on tp.mall_id = tm.id
where tp.id = id and tm.color = 'red'

但是每次写一个联表查询SQL都需要这样来一次,维护起来就比较困难了。

于是有了下面这种写法:
首先,创建一个Alias_Column_List

<sql id="Alias_Column_List" >
    ${alias}.id,  ${alias}.name,  ${alias}....
</sql>

然后在写SQL的时候,如下引用即可:

select
<include refid="Alias_Column_List" >
    <property name="alias" value="tp"/>
</include>
from tbl_product tp 
left join tbl_mall tm on tp.mall_id = tm.id
where tp.id = id and tm.color = 'red'
上一篇下一篇

猜你喜欢

热点阅读