MyBatis的 是指定而非創建


1.mybatis在實體類只有一個構造函數的情況下是不會報錯的,不管你是查詢幾個列,不管你有沒有寫getter,setter,只要有一個構造函數(不管無參,有參,有幾個),都能夠正確輸出toString。

2.在實體類有多個構造函數,並且沒有和mapper文件中的sql語句對應的構造函數時(不管有沒有getter,setter))會報錯如下:org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: No constructor found in com.entity.Test1 matching [java.lang.Integer, java.lang.String]

主要是記錄一下:對這個不怎么理解,只要隨便有一個構造函數就可以,但是構造函數超過或者等於2個,並且沒有和mapper的sql語句對應的構造函數會出錯。

3.解決方法:從1,2可知,只要有一個構造函數就可以解決問題,可能是mybatis有選擇恐懼症,不知道選哪個。因此在沒有符合sql語句的構造函數的情況下,我們可以使用<resultMap>中的<constructor>指定一個具體的構造函數給mybatis。注意:這里是指定,而不是讓mybatis通過<constructor>創建。我就搞錯了,浪費2小時在上面。

聽課沒聽懂,還是看了https://blog.csdn.net/u012702547/article/details/54599132這篇文章看見的指定。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM