1.前言
太久沒寫這種套娃式的sql語句了,導緻今天一寫,直接給我整了個報錯。
原因其實蠻簡單的,mybatis的xml中的resultMap标簽規定了内标簽的順序,寫錯了就會直接解析不出來,進而報錯。就和sql語句一樣的,定義了自己的規則.
我先說說解決方式,我們再接着聊.
2.解決方式
解決:resultMap的中順序必須是
<resultMap>
<id></id>
<result />
......
<association />
.....
<collection/>
</resultMap>
我們一層一層套娃的話,必須要按照這樣的規則來寫.
我的xml中這麼寫,就一直在報這個錯誤.
改完後:
嚴格按照規則來即可.
3.總結
resultMap總結
3.1 id
映射資料表中主鍵。另外如果resultMap 多層嵌套中有多個id,并且名字相同的話,查詢的時候盡量給個别名會更好一些。
3.2 result
就是正常映射到pojo類的一個屬性。
3.3 resultType:
作用:将查詢結果按照sql列名pojo屬性名一緻性映射到pojo中。
場合:常見一些明細記錄的展示,比如使用者購買商品明細,将關聯查詢資訊全部展示在頁面時,此時可直接使用resultType将每一條記錄映射到pojo中,在前端頁面周遊list(list中是pojo)即可。
3.4 resultMap:
使用association和collection完成一對一和一對多進階映射
3.5 association:
作用:将關聯查詢資訊映射到一個pojo對象中。
場合:為了友善查詢關聯資訊可以使用association将關聯訂單資訊映射為使用者對象的pojo屬性中,比如:查詢訂單及關聯使用者資訊。
使用resultType無法将查詢結果映射到pojo對象的pojo屬性中,根據對結果集查詢周遊的需要選擇使用resultType還是resultMap。