天天看點

mybatis元素類型為 "resultMap" 的内容必須比對 "(constructor?,id *,result*,association報錯解決

1.前言

太久沒寫這種套娃式的sql語句了,導緻今天一寫,直接給我整了個報錯。

原因其實蠻簡單的,mybatis的xml中的resultMap标簽規定了内标簽的順序,寫錯了就會直接解析不出來,進而報錯。就和sql語句一樣的,定義了自己的規則.

我先說說解決方式,我們再接着聊.

2.解決方式

解決:resultMap的中順序必須是

<resultMap>
 
   <id></id>
 
   <result />
 
   ......
 
   <association />
 
   .....
 
   <collection/>
 
 </resultMap>      

我們一層一層套娃的話,必須要按照這樣的規則來寫.

我的xml中這麼寫,就一直在報這個錯誤.

mybatis元素類型為 "resultMap" 的内容必須比對 "(constructor?,id *,result*,association報錯解決

改完後:

mybatis元素類型為 "resultMap" 的内容必須比對 "(constructor?,id *,result*,association報錯解決

嚴格按照規則來即可.

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。

3.6 collection: