记一个折磨了我快一天的坑……
前提:做项目要求拆表,替换sql中表相关的名称,改了之后报错了……但报错的地方并不是我改的部分啊55555 就改了表名,注释了不用的where条件,参数一点儿没变,怎么会报错呢?而且还是数组越界的错???
一开始怀疑是表名,因为改成FROM ${@类名@方法名(参数名(从mapper.java中传过来的))},这里用的是${}方式,另一个从mapper.java传过来的参数是#{}方式。结果都改成${}方式,或者去掉mapper.java方法的@Param,都不管用……
关键错误日志:
Caused by: org.apache.ibatis.type.TypeException: Could not set parameters for mapping: ParameterMapping{property='__frch_sourceId_0', mode=IN, javaType=class java.lang.Long, 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.ArrayIndexOutOfBoundsException: 1
解决方法:
1. (我的解决方法)去掉sql中的注释/* */(找了一天居然这样就莫名其妙地好了)
2. (网上其他方法)去掉#{}外面的单引号'',因为mybatis里面#{}自带引号效果
后记:找了好久的问题,还是记录一下,希望以后也养成记录博客的好习惯~程序猿加油!