解决:nested exception is org.apache.ibatis.binding.BindingException: Parameter ‘XXX‘ not found
关于加注解,其他博客说的很清楚!但是有的人会遇见明明使用的springboot2.x以上版本,仍然提示需要加注解!这是为什么?
问题解答:jdk版本如果在1.8或以下就会遇见这个问题,因为字节编码方式不同了
历史原因:
在Java8之前,可以说你无法做到(你是不可能读取这个 id) 的,因为Java在编译的时候会将 String deviceId编译为 String arg0,然而Java8中新增了这样的一个特性,你可以在编译的时候设定保留参数名称.详见源码分析
错误总结:
注: 使用jdk1.7得到的是: [1, 0, param1, param2]
使用1.8得到的则是: [arg1, arg0, param1, param2]
idea有时可以不加@Param,那么它 对我的代码做了什么?
但是 你如使用的是idea ,即时不写@Param 也能成功,原因是
IDEA编译时采取了强制保持方法参数变量名,但需要满足如下
-
必须是jdk8或以上
-
编译器参数-parameters
我用1.8实际运行起来依然不行,所以建议大家还是加上注解
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » SpringBoot的Mapper文件什么时候需要使用@Param注解
发表评论 取消回复