亚洲一区精品自拍_2021年国内精品久久_男同十八禁gv在线观看_免费观看a级性爱黄片

Article / 文章中心

MyBatisPlus中使用SELECT關(guān)聯(lián)查詢(xún)時(shí)未添加別名報(bào)異常的問(wèn)題分析與修復(fù)

發(fā)布時(shí)間:2021-11-25 點(diǎn)擊數(shù):976

問(wèn)題

  • 在MyBatisPlus中要使用到關(guān)聯(lián)查詢(xún)時(shí),如果查詢(xún)的主表字段不使用別名,會(huì)出現(xiàn)異常:
Column 'id' in field list is ambiguous

原因

  • 列ID在字段列表中重復(fù),其實(shí)就是兩張表有相同的字段,但是使用時(shí)表字段的名稱(chēng)前沒(méi)有加表名,導(dǎo)致指代不明,前面加上前綴別名就沒(méi)問(wèn)題

新問(wèn)題

  • 由于xml中已經(jīng)用SQL封裝好通用結(jié)果列,引用結(jié)果列方法:
<include refid="Base_Column_List"></include>
  • 那么,如何給結(jié)果列添加別名呢?

解決辦法

方法一

  • 在定義結(jié)果列的SQL語(yǔ)句中為使用了相同表字段的字段添加別名
  • 這樣之后使用include標(biāo)簽引用時(shí)就是帶別名引用

方法二

  • 使用include標(biāo)簽的property屬性,為include標(biāo)簽中的字段添加別名
  • 使用 ${ } 占位符參數(shù)化的,占位符也可以被用在refid 屬性里.不可以使用 #{ }
  • 此處的參數(shù)不是調(diào)用時(shí)傳進(jìn)來(lái)的,不同的屬性值通過(guò)包含的實(shí)例而變化
<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>

總結(jié)

  • 在mybatis的定義中 ,sql標(biāo)簽節(jié)點(diǎn)是用來(lái)定義可重用的SQL代碼段
  • 可使用include標(biāo)簽節(jié)點(diǎn)來(lái)包含在其它語(yǔ)句里
  • 在include標(biāo)簽中可以使用property標(biāo)簽,將屬性包含進(jìn)來(lái)