Mybatis:mapper接口中的@Param
Posted 虎子
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis:mapper接口中的@Param相关的知识,希望对你有一定的参考价值。
mybatis的@param注解在mapper接口(dao层)的参数中使用
使用与否的区别
不使用@param:
- 只能有一个参数
- 该参数只能为Javabean类型(即参数只能是对象)
- sql语句只能使用 # 获取参数值
- 在SQL语句中,可以直接获取对象的字段,而不需要使用“对象.字段”的形式(这样使用反而会报错)
注:
- 这三种限制中前两种是网上广为流传的,但是在我的实际使用中发现并不是这样,即使不使用@param注解,mapper方法中也可以使用多个参数且并没有类型的限制,xml中的SQL语句可以正常接收,出现这种情况可能跟mybatis的版本有关
- 第四种情况是我自己遇到的:若不使用@param注解,则sql语句应该直接获取字段
使用@param:
- 可以有多个参数
- 参数类型没有限制
- sql语句可以使用 # 或者 $ 获取参数值
- 若参数为对象,在SQL语句中,需要使用“对象.字段”的形式获取对象的字段值
另外:在网上查资料的时候,发现似乎还有很多种情况需要使用@param注解,比如使用动态sql,只是没有自己验证过
以上,为避免麻烦,建议在使用mybatis时,mapper中的方法都为参数添加上@param参数
以上是关于Mybatis:mapper接口中的@Param的主要内容,如果未能解决你的问题,请参考以下文章
mybatis三剑客之插件---MyBatis plugins
zbb20171215 MyBatis报错: Parameter '*' not found. Available parameters are [1, 0, param1, para