解決mybatisplus插入報錯argument type mismatch的問題
今天使用argument type mismatch發(fā)現(xiàn)插入的時候報錯
java.lang.IllegalArgumentException: argument type mismatch
從錯誤中看是參數(shù)的問題,想到我再實體類里面定義了幾個在數(shù)據(jù)庫中沒有的字段,就使用了
@TableField(exist = false)
來排除掉這個字段。
再跑發(fā)現(xiàn)還是這個錯誤,后來看了下主鍵的@TableId默認的type是IdType.NONE,想想我們應(yīng)該用自增的id就手動增加了一個
@TableId(type = IdType.AUTO)
果然,再插入的時候就可以了。
剛使用mybatisplus,還不熟悉,都是路障啊。哎~
補充知識:Mybatis自定義DAO層時踩的坑
自定義Mybatis時出現(xiàn),數(shù)據(jù)類型不匹配的異常
java.lang.RuntimeException: java.lang.IllegalArgumentException: argument type mismatch。。。
for (int i = 1; i <= columnCount; i++) {
//獲取每列的名稱,列名的序號是從1開始的
String columnName = rsmd.getColumnName(i);
//根據(jù)得到列名,獲取每列的值
Object columnValue = rs.getObject(columnName);
System.out.println(columnValue.getClass().getSimpleName());
//給obj賦值:使用Java內(nèi)省機制(借助PropertyDescriptor實現(xiàn)屬性的封裝)
PropertyDescriptor pd = new PropertyDescriptor(columnName,domainClass);//要求:實體類的屬性和數(shù)據(jù)庫表的列名保持一種
//獲取它的寫入方法
Method writeMethod = pd.getWriteMethod();
//把獲取的列的值,給對象賦值
writeMethod.invoke(obj,columnValue);
}
//把賦好值的對象加入到集合中
list.add(obj);

這種情況是因為數(shù)據(jù)庫中定義的類型在運行時不一定就是那個類型,例如你用int型定義的字段,但是在取出來的值卻是別的類型,這個時候建議打印一下字段類型,然后在相應(yīng)的實體類中修改類型即可。
最好不要直接用object賦值,使用map會好一些。
以上這篇解決mybatisplus插入報錯argument type mismatch的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
IDEA神器一鍵查看Java字節(jié)碼及其他類信息插件
這篇文章主要為大家介紹了一款I(lǐng)DEA神器,可以一鍵查看Java字節(jié)碼及其他類信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01
詳解IntelliJ IDEA 中如何配置多個jdk版本即(1.7和1.8兩個jdk都可用)
這篇文章主要介紹了詳解IntelliJ IDEA 中如何配置多個jdk版本即(1.7和1.8兩個jdk都可用),非常具有實用價值,需要的朋友可以參考下2017-11-11
SpringCloud之Zuul網(wǎng)關(guān)原理及其配置講解
這篇文章主要介紹了SpringCloud之Zuul網(wǎng)關(guān)原理及其配置講解,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03
SpringBoot2整合Ehcache組件實現(xiàn)輕量級緩存管理
EhCache是一個純Java的進程內(nèi)緩存框架,具有快速、上手簡單等特點,是Hibernate中默認的緩存提供方。本文講述下SpringBoot2 整合Ehcache組件的步驟2021-06-06

