Mybatis結果集對映問題
阿新 • • 發佈:2022-03-06
之前的資料庫圖簡單都是純小寫格式,這一次做專案為了顯得正規一些,模擬實際的情況,採用了駝峰命名的規則,這時候就遇到了結果匹配的問題。
之前只要
<select id="select" parameterType="map" resultType="xxxx">
就可以自動匹配,這一次我也以為可以,但是實際測試的時候發現能查到資料,可是資料無法傳輸出來,我以為是sql語句出現了問題,資料庫不認識xx_xx這種寫法的原因,但是通過mybatis打印出來的sql日誌又發現沒有問題,同時列印結果集的size也是大於0的,說明能正常查到資料,那麼問題就只能出現在封裝的過程當中,我就想到了應該是字符集映射出來問題,就改寫resultMap,第一次使用該方法,對應完之後執行直接報錯。
檢視控制檯輸出
Error resolving JdbcType. Cause:java.lang.IllegalArgumentException: No enum
這是因為Mybatis不認識int型別的jdbctype資料,不僅要大寫,而且得是Integer
附一張mybatis官網書寫的支援的jdbctype型別資料
ps:其實也還有一種複雜的寫法,此前我也在其他短小的專案中使用過
select doc.id, doc.title, doc.text, doc.departid, doc.authorid, depart.name as departName, emp.name as authorName, doc.statenum, doc.advice, empl.name as approveName, empl.id as approveId
這種寫法複用率很低,當你有多個查詢同一個物件的語句時還是使用結果集對映更為方便。