ssm项目Mybatis的sql语句出错,在此记录
Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='label', mode=IN, javaType=class java.lang.Integer, jdbcType=VARCHAR, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}. Cause: org.apache.ibatis.type.TypeException: Error setting non null for parameter #2 with JdbcType VARCHAR . 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')
在xml中,错误的写法:
<select id="selectArticleNumByLabel" parameterType="java.lang.Integer" resultType="Integer">
select count(*)
from article
where userid = #{userid,jdbcType=INTEGER} and label = #{label,jdbcType=VARCHAR}
</select>
原因,我觉得传入的两个参数,一个是Integer,一个是String,但是类java.lang.String不能转换为类java.lang.Integer。所以出错
正确写法:
<select id="selectArticleNumByLabel" parameterType="com.mandy.model.Article" resultType="Integer">
select count(*)
from article
where userid = #{userid,jdbcType=INTEGER} and label = #{label,jdbcType=VARCHAR}
</select>