MyBatis参数名的解释
总的来说你在写mapper的时候多参数的时候无所谓,单参数的时候必须要使用@Param来给参数取别名。
解释来源于牛客项目课:
关于MyBatis参数名的解释:
在mybatis的配置里,默认情况下,是启用自然参数名的,如下图:
也就是说,你无需加@Param注解,它默认就按照参数名与表达式匹配。如果你加了@Param注解,那么就会覆盖掉这个参数名。
在对参数名称处理的层面,mybatis有2种机制,如下图
1是自然参数名,2是自动生成的参数名。mybatis会按照参数的顺序,给每个参数生成一个名字,分别是param1, param2 ...,所以在表达式里,你使用 或者 都能访问到这个参数。mybatis的官方手册,对这方面介绍的比较笼统,不够详尽。大家可以跟踪源码,看一下它底层实际的逻辑。
以上,是针对多个参数的情况。你的方法有多个参数时,mybatis会创建一个Map来封装这些参数,Map的key就是自然参数名,以及生成的参数名,都有。如果你的方法只有一个参数,它就不创建Map,而是直接获取这个参数的值,来替换sql中唯一的表达式,此时它不关注你的参数是什么名字,也不会使用这个名字。