本文主要是介绍SpringBoot的Mapper文件什么时候需要使用@Param注解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
解决: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注解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!