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

當前位置:文章中心>技術教程
公告通知 新聞快遞 技術教程 產品展示

MyBatisPlus中使用SELECT關聯(lián)查詢時未添加別名報異常的問題分析與修復

發(fā)布時間:2021-11-25 點擊數:978

問題

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

原因

  • 列ID在字段列表中重復,其實就是兩張表有相同的字段,但是使用時表字段的名稱前沒有加表名,導致指代不明,前面加上前綴別名就沒問題

新問題

  • 由于xml中已經用SQL封裝好通用結果列,引用結果列方法:
<include refid="Base_Column_List"></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標簽節(jié)點是用來定義可重用的SQL代碼段
  • 可使用include標簽節(jié)點來包含在其它語句里
  • 在include標簽中可以使用property標簽,將屬性包含進來