Mybatis:mapper接口中的@Param

Posted 虎子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis:mapper接口中的@Param相关的知识,希望对你有一定的参考价值。

mybatis的@param注解在mapper接口(dao层)的参数中使用

使用与否的区别

不使用@param:

  1. 只能有一个参数
  2. 该参数只能为Javabean类型(即参数只能是对象)
  3. sql语句只能使用 # 获取参数值
  4. 在SQL语句中,可以直接获取对象的字段,而不需要使用“对象.字段”的形式(这样使用反而会报错)

注:

  • 这三种限制中前两种是网上广为流传的,但是在我的实际使用中发现并不是这样,即使不使用@param注解,mapper方法中也可以使用多个参数且并没有类型的限制,xml中的SQL语句可以正常接收,出现这种情况可能跟mybatis的版本有关
  • 第四种情况是我自己遇到的:若不使用@param注解,则sql语句应该直接获取字段

使用@param:

  1. 可以有多个参数
  2. 参数类型没有限制
  3. sql语句可以使用 # 或者 $ 获取参数值
  4. 若参数为对象,在SQL语句中,需要使用“对象.字段”的形式获取对象的字段值

另外:在网上查资料的时候,发现似乎还有很多种情况需要使用@param注解,比如使用动态sql,只是没有自己验证过

以上,为避免麻烦,建议在使用mybatis时,mapper中的方法都为参数添加上@param参数

以上是关于Mybatis:mapper接口中的@Param的主要内容,如果未能解决你的问题,请参考以下文章

mybatis中@Param用法

mybatis三剑客之插件---MyBatis plugins

MyBatis动态传参

mybatis中@Param的用法和作用

MyBatis教程之三—多参数的获取方式

zbb20171215 MyBatis报错: Parameter '*' not found. Available parameters are [1, 0, param1, para