Mybatis單個(gè)參數(shù)的if判斷報(bào)異常There is no getter for property named 'xxx' in 'class java.lang.Integer'的解決方案
我們都知道m(xù)ybatis在進(jìn)行參數(shù)判斷的時(shí)候,直接可以用<if test=""></if> 就可以了,如下:
1、常規(guī)代碼
<update id="update" parameterType="com.cq2022.zago.order.entity.Test" >
update t_test_l
<set >
<if test="trnsctWayId != null" >
trnsct_way_id = #{trnsctWayId,jdbcType=TINYINT},
</if>
<if test="langId != null" >
lang_id = #{langId,jdbcType=INTEGER},
</if>
</set>
where trnsct_way_l_id = #{trnsctWayLId,jdbcType=INTEGER}
</update>
但是單個(gè)參數(shù)和多參數(shù)的判斷有個(gè)不同點(diǎn),當(dāng)我們的入?yún)?code>entity實(shí)體,或者map的時(shí)候,使用if 參數(shù)判斷沒任何問題。
但是當(dāng)我們的入?yún)?code>java.lang.Integer 或者 java.lang.String的時(shí)候,這時(shí)候就需要注意一些事情了
具體代碼如下(咱們看著代碼說,先展示錯(cuò)誤代碼):
2、錯(cuò)誤代碼
<select id="getTrnsctListByLangId" parameterType="java.lang.Integer" resultType="java.lang.Integer">
select
trnsct_id
from t_trnsct_way_l where
<if test="langId != null" >
and lang_id = #{langId}
</if>
</select>
上述代碼存在一些問題,首先入?yún)⑹莏ava.lang.Integer, 而不是map或者實(shí)體的入?yún)⒎绞?,?duì)于這類單個(gè)入?yún)⑷缓笥胕f判斷的,mybatis有自己的內(nèi)置對(duì)象,如果你在if判斷里面 寫的是你的入?yún)⒌膶?duì)象名,那就報(bào)異常:Internal error : nested exception is org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'langId' in 'class java.lang.Integer'
3、正確代碼:

這里就涉及到mybatis的內(nèi)置對(duì)象_parameter,單個(gè)參數(shù)判斷的時(shí)候,就不像1、 2那樣直接用參數(shù)對(duì)象名判斷了。還有就是數(shù)據(jù)類型最好加上
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Java橋接模式實(shí)例詳解【簡(jiǎn)單版與升級(jí)版】
這篇文章主要介紹了Java橋接模式,結(jié)合實(shí)例形式分析了java橋接模式簡(jiǎn)單版與升級(jí)版兩種實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-07-07
JavaWeb三大組件之監(jiān)聽器Listener詳解
這篇文章主要介紹了JavaWeb三大組件之監(jiān)聽器Listener詳解,在JavaWeb應(yīng)用程序中,Listener監(jiān)聽器是一種機(jī)制,用于監(jiān)聽和響應(yīng)特定的事件,它可以感知并響應(yīng)與應(yīng)用程序相關(guān)的事件,從而執(zhí)行相應(yīng)的邏輯處理,需要的朋友可以參考下2023-10-10
基于spring mvc請(qǐng)求controller訪問方式
這篇文章主要介紹了spring mvc請(qǐng)求controller訪問方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
Java使用POI實(shí)現(xiàn)excel文件的導(dǎo)入和導(dǎo)出
這篇文章主要為大家詳細(xì)介紹了Java如何使用POI實(shí)現(xiàn)excel文件的導(dǎo)入和導(dǎo)出功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-12-12
Java使用Lua實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)展和腳本自動(dòng)升級(jí)
Lua是一種輕量級(jí)的腳本語言,常用于游戲開發(fā)和嵌入式系統(tǒng)中,這篇文章主要介紹了Java如何調(diào)用Lua實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)展和腳本自動(dòng)升級(jí),感興趣的可以學(xué)習(xí)下2023-08-08

