MyBatis中@param注解参数类型错误异常如何解决

  介绍

这篇文章给大家介绍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注解参数类型错误异常如何解决