Mybatis實體類為什么要提供一個無參的構造函數解析


類中如果沒有構造函數,隱藏是無參構造函數,方便實體類需要通過Mybatis進行動態反射生成。
如果實體類中一旦聲明構造函數,無參構造函數則不存在。

select * from table 如果“*”表示的字段個數與設置的有參構造函數不同,mybatis無法進動態反射生成報錯
可以建一個無參構造函數,可解決此類問題,或者“*”表示的字段與構造函數字段數一樣多。

因為mybatis框架會調用這個默認構造方法來構造實例對象。

即Class類的newInstance方法 這個方法就是通過調用默認構造方法來創建實例對象的 ,

另外再提醒一點,如果你沒有提供任何構造方法,虛擬機會自動提供默認構造方法(無參構造器),但是如果你提供了其他有參數的構造方法的話,虛擬機就不再為你提供默認構造方法,這時必須手動把無參構造器寫在代碼里,否則new Xxxx()是會報錯的,所以默認的構造方法不是必須的,只在有多個構造方法時才是必須的,這里“必須”指的是“必須手動寫出來”。

當查詢的時候返回的實體類是一個對象實例,是mybatis動態通過反射生成的

反射的Class.forName("className").newInstance();需要對應的類提供一個無參構造函數


免責聲明!

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



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