问题描述:
Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [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=‘nowTime’, 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 #2 with JdbcType null . Try setting a different JdbcType for this parameter or a different configuration property. Cause: java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer] with root cause
java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Integer
dao层接口:
ArrayList<User> selectUserRecordList(@Param("uId") int uId, @Param("nowTime") String nowTime);
sql语句如下:
<select id="selectUserRecordList" resultMap="selectRecord" parameterType="int">
select * from user u,cup_record r where u.uId = r.uId and u.uId = #{uId} and r.recordTime like concat('%',#{nowTime},'%')
</select>
问题冲突在于黑体部分:在于nowTime为String类型,与parameType定义的int型起了冲突,把parameType去掉就行。
修改sql语句:
<select id="selectUserRecordList" resultMap="selectRecord">
select * from user u,cup_record r where u.uId = r.uId and u.uId = #{uId} and r.recordTime like concat('%',#{nowTime},'%')
</select>
问题解决!