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'