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這篇文章看見的指定。
