Mybatis使用@param注解四种情况解析
一、方法有多个参数
例如:
接口方法:
@Mapper publicinterfaceUserMapper{ Integerinsert(@Param("username")Stringusername,@Param("address")Stringaddress); }
对应的xml:
insertintouser(username,address)values(#{username},#{address});
原因:当不使用@Param注解时,mybatis是不认识哪个参数叫什么名字的,尽管在接口中定义了参数的名称,mybatis仍然不认识。这时mybatis将会以接口中参数定义的顺序和SQL语句中的表达式进行映射,这是默认的。
二、方法参数要取别名
例如
@Mapper publicinterfaceUserMapper{ Integerinsert(@Param("username")Stringusername,@Param("address")Stringaddress); }
对应的xml:
insertintouser(username,address)values(#{username},#{address});
三、XML中的SQL使用了$拼接sql
$会有注入的问题,但是有的时候不得不使用$符号,例如要传入列名或者表名的时候,这个时候必须要添加@Param注解
例如:
@Mapper publicinterfaceUserMapper{ ListgetAllUsers(@Param("order_by")Stringorder_by); }
对应xml:
select*fromuser orderby${order_by}desc
四、动态SQL中使用了参数作为变量
如果在动态SQL中使用参数作为变量,那么也需要@Param注解,即使你只有一个参数。例如如下方法:
@Mapper publicinterfaceUserMapper{ ListgetUserById(@Param("id")Integerid); }
对应xml:
select*fromuser whereid=#{id}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。