更改類的屬性型別後發現的坑org.apache.ibatis.type.TypeException: Could not set parameters for mapping

翎野君發表於2024-07-17

背景

本次將一個類的屬性從Integer改成String,上線後發現有這種報錯org.apache.ibatis.type.TypeException: Could not set parameters for mapping

org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='brandName', mode=IN, javaType=class java.lang.Integer,
jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non
null for parameter #1 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause:
java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Integer (java.lang.String and java.lang.Integer are in module
java.base of loader 'bootstrap')

實際上有兩個類

一個是com.lingyejun.Brand

另一個com.lingyejun.BrandCriterion

本次改動的brandName是在Brand類中改成了String,但是BrandCriterion遺漏掉了,並未進行更正。

 <update id="updateBrand" parameterType="com.lingyejun.BrandCriterion">
        update tb_brand set brand_name = #{brandName},company_name = #    {companyName},ordered=#{ordered},description=#{description},status=#{status} where id=#{id};
 </update>

際上parameterType的引數可以不傳,但是如果傳了就要保證正確,錯誤的寫成了com.lingyejun.BrandCriterion,導致了上述報錯。

將parameterType設定為自己實體類的路徑com.lingyejun.Brand或者把parameterType刪除

本篇文章如有幫助到您,請給「翎野君」點個贊,感謝您的支援。

首發連結:https://www.cnblogs.com/lingyejun/p/18306479

相關文章