mybatis元素类型为 “resultMap“ 的内容必须匹配 “(constructor?,id *,result*,association报错解决
1.前言
太久沒寫這種套娃式的sql語句了,導(dǎo)致今天一寫,直接給我整了個報錯。
原因其實蠻簡單的,mybatis的xml中的resultMap標簽規(guī)定了內(nèi)標簽的順序,寫錯了就會直接解析不出來,從而報錯。就和sql語句一樣的,定義了自己的規(guī)則.
我先說說解決方式,我們再接著聊.
2.解決方式
解決:resultMap的中順序必須是
<resultMap>?<id></id>?<result />?......?<association />?.....?<collection/>?</resultMap>我們一層一層套娃的話,必須要按照這樣的規(guī)則來寫.
我的xml中這么寫,就一直在報這個錯誤.
改完后:
嚴格按照規(guī)則來即可.
3.總結(jié)
resultMap總結(jié)
3.1 id
映射數(shù)據(jù)表中主鍵。另外如果resultMap 多層嵌套中有多個id,并且名字相同的話,查詢的時候盡量給個別名會更好一些。
3.2 result
就是正常映射到pojo類的一個屬性。
3.3 resultType:
作用:將查詢結(jié)果按照sql列名pojo屬性名一致性映射到pojo中。
場合:常見一些明細記錄的展示,比如用戶購買商品明細,將關(guān)聯(lián)查詢信息全部展示在頁面時,此時可直接使用resultType將每一條記錄映射到pojo中,在前端頁面遍歷list(list中是pojo)即可。
3.4 resultMap:
使用association和collection完成一對一和一對多高級映射
3.5 association:
作用:將關(guān)聯(lián)查詢信息映射到一個pojo對象中。
場合:為了方便查詢關(guān)聯(lián)信息可以使用association將關(guān)聯(lián)訂單信息映射為用戶對象的pojo屬性中,比如:查詢訂單及關(guān)聯(lián)用戶信息。
使用resultType無法將查詢結(jié)果映射到pojo對象的pojo屬性中,根據(jù)對結(jié)果集查詢遍歷的需要選擇使用resultType還是resultMap。
3.6 collection:
作用:將關(guān)聯(lián)查詢信息映射到一個list集合中。
場合:為了方便查詢遍歷關(guān)聯(lián)信息可以使用collection將關(guān)聯(lián)信息映射到list集合中,比如:查詢用戶權(quán)限范圍模塊及模塊下的菜單,可使用collection將模塊映射到模塊list中,將菜單列表映射到模塊對象的菜單list屬性中,這樣的作的目的也是方便對查詢結(jié)果集進行遍歷查詢。
如果使用resultType無法將查詢結(jié)果映射到list集合中。
后語
我們一起加油吧
你好,我是博主寧在春:主頁
希望本篇文章能讓你感到有所收獲!!!
祝 我們:待別日相見時,都已有所成。
歡迎大家一起討論問題😁,躺了🛌
掘友可點點這👉掘金 | 寧在春
總結(jié)
以上是生活随笔為你收集整理的mybatis元素类型为 “resultMap“ 的内容必须匹配 “(constructor?,id *,result*,association报错解决的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 你学废了 Mybatis 动态批量修改吗
- 下一篇: Minio 小技巧 | 通过编码设置桶策