解決mybatisplus插入報(bào)錯(cuò)argument type mismatch的問題
今天使用argument type mismatch發(fā)現(xiàn)插入的時(shí)候報(bào)錯(cuò)
java.lang.IllegalArgumentException: argument type mismatch
從錯(cuò)誤中看是參數(shù)的問題,想到我再實(shí)體類里面定義了幾個(gè)在數(shù)據(jù)庫中沒有的字段,就使用了
@TableField(exist = false)
來排除掉這個(gè)字段。
再跑發(fā)現(xiàn)還是這個(gè)錯(cuò)誤,后來看了下主鍵的@TableId默認(rèn)的type是IdType.NONE,想想我們應(yīng)該用自增的id就手動(dòng)增加了一個(gè)
@TableId(type = IdType.AUTO)
果然,再插入的時(shí)候就可以了。
剛使用mybatisplus,還不熟悉,都是路障啊。哎~
補(bǔ)充知識(shí):Mybatis自定義DAO層時(shí)踩的坑
自定義Mybatis時(shí)出現(xiàn),數(shù)據(jù)類型不匹配的異常
java.lang.RuntimeException: java.lang.IllegalArgumentException: argument type mismatch。。。
for (int i = 1; i <= columnCount; i++) { //獲取每列的名稱,列名的序號(hào)是從1開始的 String columnName = rsmd.getColumnName(i); //根據(jù)得到列名,獲取每列的值 Object columnValue = rs.getObject(columnName); System.out.println(columnValue.getClass().getSimpleName()); //給obj賦值:使用Java內(nèi)省機(jī)制(借助PropertyDescriptor實(shí)現(xiàn)屬性的封裝) PropertyDescriptor pd = new PropertyDescriptor(columnName,domainClass);//要求:實(shí)體類的屬性和數(shù)據(jù)庫表的列名保持一種 //獲取它的寫入方法 Method writeMethod = pd.getWriteMethod(); //把獲取的列的值,給對(duì)象賦值 writeMethod.invoke(obj,columnValue); } //把賦好值的對(duì)象加入到集合中 list.add(obj);
這種情況是因?yàn)閿?shù)據(jù)庫中定義的類型在運(yùn)行時(shí)不一定就是那個(gè)類型,例如你用int型定義的字段,但是在取出來的值卻是別的類型,這個(gè)時(shí)候建議打印一下字段類型,然后在相應(yīng)的實(shí)體類中修改類型即可。
最好不要直接用object賦值,使用map會(huì)好一些。
以上這篇解決mybatisplus插入報(bào)錯(cuò)argument type mismatch的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java實(shí)現(xiàn)掃雷游戲詳細(xì)代碼講解
windows自帶的游戲《掃雷》是陪伴了無數(shù)人的經(jīng)典游戲,本文將利用Java語言實(shí)現(xiàn)這一經(jīng)典的游戲,文中的示例代碼講解詳細(xì),感興趣的可以學(xué)習(xí)一下2022-05-05IDEA神器一鍵查看Java字節(jié)碼及其他類信息插件
這篇文章主要為大家介紹了一款I(lǐng)DEA神器,可以一鍵查看Java字節(jié)碼及其他類信息,有需要的朋友可以借鑒參考下,希望能夠有所幫助2022-01-01詳解IntelliJ IDEA 中如何配置多個(gè)jdk版本即(1.7和1.8兩個(gè)jdk都可用)
這篇文章主要介紹了詳解IntelliJ IDEA 中如何配置多個(gè)jdk版本即(1.7和1.8兩個(gè)jdk都可用),非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-11-11SpringCloud之Zuul網(wǎng)關(guān)原理及其配置講解
這篇文章主要介紹了SpringCloud之Zuul網(wǎng)關(guān)原理及其配置講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03SpringBoot2整合Ehcache組件實(shí)現(xiàn)輕量級(jí)緩存管理
EhCache是一個(gè)純Java的進(jìn)程內(nèi)緩存框架,具有快速、上手簡單等特點(diǎn),是Hibernate中默認(rèn)的緩存提供方。本文講述下SpringBoot2 整合Ehcache組件的步驟2021-06-06Java中ArrayList與順序表的概念與使用實(shí)例
順序表是指用一組地址連續(xù)的存儲(chǔ)單元依次存儲(chǔ)各個(gè)元素,使得在邏輯結(jié)構(gòu)上相鄰的數(shù)據(jù)元素存儲(chǔ)在相鄰的物理存儲(chǔ)單元中的線性表,下面這篇文章主要介紹了Java?ArrayList與順序表的相關(guān)資料,需要的朋友可以參考下2022-01-01