問題描述:
項目中需要多表查詢時相同的列起了別名, 在mybatis中查詢無法得到left join的表中對應信息, 只有主表的信息
在數據庫中直接測試sql語句排除了語句問題, 也沒有報錯, 所以不是哪裏敲錯了
最後關注在別名的問題上, 發現mybatis的映射關係中列名有別名必須用別名, 不能用表名. 列名的形式, 否則不會報錯但就是查詢不到該表的結果
省略了很多無關列, 用一列說明問題:
選擇列時起了別名:
select
sold_out.purchase_id AS soldOutPurchaseId
MYBATIS中直接sql語句 別名和表名.列名都可以用
from order_list
LEFT JOIN sold_out ON order_list.id = sold_out.purchase_id
映射關係:
正確:
<resultMap id="AllResultMap" type="com.xxx.OrderInfoForm" >
<result column="productInfoId" property="productInfoId" jdbcType="INTEGER" />
<resultMap>
錯誤:
<resultMap id="AllResultMap" type="com.xxx.OrderInfoForm" >
<result column="sold_out.purchase_id" property="productInfoId" jdbcType="INTEGER" />
<resultMap>
難受的是沒有報錯, 不說找不到列啥的, 只是鏈接的表信息查詢不出 , 需要逐個排查