mybatis參數(shù)類型不匹配錯(cuò)誤argument type mismatch的處理方案
參數(shù)類型不匹配錯(cuò)誤argument type mismatch
錯(cuò)誤日志
java.lang.RuntimeException: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property ‘id’ of ‘class xxxxxxxx’ with value ‘37997’ Cause: java.lang.IllegalArgumentException: argument type mismatch
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.ExecutorException: Error selecting key or setting result to parameter object. Cause: org.apache.ibatis.reflection.ReflectionException: Could not set property ‘id’ of ‘class com.fshows.lifecircle.marketcore.service.dal.lifecircle.dataobject.TpLifecircleQuotaDO’ with value ‘37997’ Cause: java.lang.IllegalArgumentException: argument type mismatch
錯(cuò)誤描述
根據(jù)字面意思就是:參數(shù)類型不匹配
實(shí)際就是某個(gè)參數(shù)存儲(chǔ)的,與傳入的參數(shù)類型不一致
錯(cuò)誤代碼

錯(cuò)誤原因
在mybatis:gen生成代碼的時(shí)候,這個(gè)id參數(shù)生成類型resultType=“java.lang.Long”,但實(shí)際數(shù)據(jù)庫(kù)類型是int,應(yīng)該對(duì)應(yīng)resultType=“java.lang.Integer”
只要將Long改為Integer,與數(shù)據(jù)庫(kù)對(duì)應(yīng)即可。
mybatis時(shí)argument type mismatch的坑
錯(cuò)誤描述:參數(shù)類型不匹配
常見錯(cuò)誤中 mybatis映射出現(xiàn)問題無非就
column名字錯(cuò)誤、property字段名錯(cuò)誤、resultMap id寫錯(cuò)了 沒對(duì)上、映射實(shí)體類屬性類型和數(shù)據(jù)庫(kù)字段類型對(duì)不上,
這個(gè)一般都是比較容易想到和發(fā)現(xiàn)的。
但是某一天 映射實(shí)體類 因?yàn)槟承┑胤揭獢?shù)據(jù)處理,你寫了一個(gè)有參構(gòu)造,而沒把無參構(gòu)造補(bǔ)上,這時(shí)mybatis在映射的時(shí)候 (映射首先要?jiǎng)?chuàng)建對(duì)象) 就會(huì)出現(xiàn)異常,而此時(shí)的參數(shù)類型不匹配 正是指的構(gòu)造參數(shù)類型不匹配 而非數(shù)據(jù)字段和屬性不匹配!
例如
new PeopleVO(People p) 和 new People() debug下可以看到會(huì)報(bào)錯(cuò)參數(shù)People類型錯(cuò)誤
所以在開發(fā)中 該遵循的規(guī)則 還是要遵循,相信不少人在初學(xué)java的時(shí)候 一定聽過 寫了有參構(gòu)造一定要手動(dòng)把無參構(gòu)造寫上,當(dāng)時(shí)我想的是 要是用上無參構(gòu)造new對(duì)象 編譯器也會(huì)提示,用的時(shí)候在new也不遲 況且還不一定用得上,
可是在mybatis映射的時(shí)候 想不到吧 人家反射創(chuàng)建對(duì)象了… 不由感慨 前人的總結(jié)都是踩了無數(shù)坑的基礎(chǔ)上建立起來的,那些表面看起來不會(huì)有問題的代碼 可能會(huì)以某種意想不到的形式出現(xiàn)bug
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java事務(wù)管理學(xué)習(xí)之Hibernate詳解
hibernate是jdbc輕量級(jí)的封裝,本身不具備事務(wù)管理的能力,在事物管理層面,一般是委托于底層的jdbc和jta來完成調(diào)度的。下面這篇文章主要給大家介紹了Java事務(wù)管理學(xué)習(xí)之Hibernate的相關(guān)資料,需要的朋友可以參考下。2017-03-03
SpringBoot集成SpringSecurity和JWT做登陸鑒權(quán)的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot集成SpringSecurity和JWT做登陸鑒權(quán)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Java Timezone類常見問題_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java Timezone類常見問題的相關(guān)資料,需要的朋友可以參考下2017-05-05
Springboot實(shí)現(xiàn)多文件上傳代碼解析
這篇文章主要介紹了Springboot實(shí)現(xiàn)多文件上傳代碼解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Mybatis實(shí)現(xiàn)分頁的注意點(diǎn)
Mybatis提供了強(qiáng)大的分頁攔截實(shí)現(xiàn),可以完美的實(shí)現(xiàn)分功能。下面小編給大家分享小編在使用攔截器給mybatis進(jìn)行分頁所遇到的問題及注意點(diǎn),需要的朋友一起看看吧2017-07-07
解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題
這篇文章主要介紹了解決tomcat發(fā)布工程后,WEB-INF/classes下文件不編譯的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-12-12

