背景
本次將一個類的屬性從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