介绍解决办法
这篇文章给大家介绍MyBatis中@param注解参数类型错误异常如何解决,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
解决办法
我感觉可能使用用到了MyBatis的关键字,所以就把阈值换了个名字,果然好了。
问题原因
某些关键词,MyBatis会认为是某种类型、下面列出来一些,后面发现再补充。
大小、阈值,modCount是int类型负载系数
是浮动类型
<强>补充:MyBatis使用@param的坑强>
在MyBatis中@param注解的作用是为参数指定一个名称,在映射文件中使用,而不是使用MyBatis的参数[0,1…]代替。但是在非动态的映射器——MyBatis根据映射器接口创建实现类,@param注解是不起作用的。
阅读MyBatis的源码得知,检查@param注解的方法:
private boolean hasNamedParams (Method 方法),{ ,,boolean hasNamedParams =,假; ,,final 对象[][],paramAnnos =, method.getParameterAnnotations (); ,,for (Object [], paramAnno :, paramAnnos), { ,,,for (Object aParamAnno : paramAnno), { ,,,,if (aParamAnno instanceof 参数),{ ,,,,,hasNamedParams =,真的; ,,,,,休息; ,,,,} ,,,} ,,} ,,return hasNamedParams; 以前,,}>此方法位于org.apache.ibatis.binding。MapperMethod的内部类MethodSignature中。
根据源码一步一步的递归:
MethodSignature的构造方法——祝辞MapperMethod的构造方法——祝辞MapperProxy的cachedMapperMethod和调用方法——比;MapperProxyFactory中的newInstance方法。
@SuppressWarnings (“unchecked") ,protected T  newInstance (MapperProxy, mapperProxy =, new MapperProxy (sqlSession, mapperInterface,, methodCache); return 才能newInstance (mapperProxy); 以前,}> 在整合弹簧与mybatis,使用弹簧提供的sqlSessionTemplate进行查询时,没有从MapperRegistry的mapper缓存集合中取映射器,而是直接使用配置的sqlSessionTemplate。
所以这种清况下,@param注解是无效的。
MyBatis中@param注解参数类型错误异常如何解决