您好,登錄后才能下訂單哦!
使用mybatisplus插入時出現argument type mismatch報錯如何解決?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
今天使用argument type mismatch發現插入的時候報錯
java.lang.IllegalArgumentException: argument type mismatch
從錯誤中看是參數的問題,想到我再實體類里面定義了幾個在數據庫中沒有的字段,就使用了
@TableField(exist = false)
來排除掉這個字段。
再跑發現還是這個錯誤,后來看了下主鍵的@TableId默認的type是IdType.NONE,想想我們應該用自增的id就手動增加了一個
@TableId(type = IdType.AUTO)
果然,再插入的時候就可以了。
剛使用mybatisplus,還不熟悉,都是路障啊。哎~
補充知識:Mybatis自定義DAO層時踩的坑
自定義Mybatis時出現,數據類型不匹配的異常
java.lang.RuntimeException: java.lang.IllegalArgumentException: argument type mismatch。。。
for (int i = 1; i <= columnCount; i++) { //獲取每列的名稱,列名的序號是從1開始的 String columnName = rsmd.getColumnName(i); //根據得到列名,獲取每列的值 Object columnValue = rs.getObject(columnName); System.out.println(columnValue.getClass().getSimpleName()); //給obj賦值:使用Java內省機制(借助PropertyDescriptor實現屬性的封裝) PropertyDescriptor pd = new PropertyDescriptor(columnName,domainClass);//要求:實體類的屬性和數據庫表的列名保持一種 //獲取它的寫入方法 Method writeMethod = pd.getWriteMethod(); //把獲取的列的值,給對象賦值 writeMethod.invoke(obj,columnValue); } //把賦好值的對象加入到集合中 list.add(obj);
這種情況是因為數據庫中定義的類型在運行時不一定就是那個類型,例如你用int型定義的字段,但是在取出來的值卻是別的類型,這個時候建議打印一下字段類型,然后在相應的實體類中修改類型即可。
最好不要直接用object賦值,使用map會好一些。
關于使用mybatisplus插入時出現argument type mismatch報錯如何解決問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。