在使用Mybatis开发Mapper接口时,多个参数按照管理我们通常加上@param注解,那么到底为什么呢?这篇文章助你解惑。
一、实现逻辑
MyBatis在执行之后为mapper接口动态生成实现类,而在Java中使用反射会将方法中的参数名称擦除也就是说不保留字段名。所以如果在xml中要接收到规定参数名称的参数,通过注解标识是简单又可行的方法,一方面可以自定义方法参数的绑定,另外一方面在xml中也可以起有意义的名称与@Param中的value对应。
二、官方文档的解释
如果你的映射方法接受多个参数,就可以使用@Param
注解自定义每个参数的名字。否则在默认情况下,除 RowBounds
以外的参数会以 “param” 加参数位置被命名,例如 #{param1}, #{param2}
。如果使用了 @Param("person")
,参数就会被命名为 #{person}
。