mybatis中bind标签和concat的使用说明
首先,二种方式都可以用来模糊查询,都能预防SQL注入。但是在更换数据库情况下,bind标签通用。
anduserNamelikeconcat('%',#{userName},'%')
使用concat函数连接字符串,在mysql中这个函数支持多个参数,但是在oracle中这个函数只支持2个参数,由于不同数据库之间的语法差异,更换数据库,这些语法就需要重写。可以用bind标签来避免更换数据库所带来的一些麻烦。
bind标签可以使用OGNL表达式创建一个变量井将其绑定到上下文中。
anduserNamelike#{userNameBind}
bind标签的两个属性都是必选项,name为绑定到上下文的变量名,value为OGNL表达式。创建一个bind标签的变量后,就可以在下面直接使用,使用bind拼接字符串不仅可以避免因更换数据库而修改SQL,也能预防SQL注入,还能实现多个引用userNameBind
补充知识:MyBatis在Oracle数据库下用concat函数模糊查询之参数个数无效错误
Oracle拼接字符串concat需要注意的小事项
在用ssm框架编写代码的时候,因为数据库换成了Oracle,在模糊查询数据的时候突然发现报错了
select*fromSYS_MENUwhereurllikeconcat('%',#{roleName},'%')
一直报错参数个数无效,在网上查找资料发现模糊查询的sql语句还是concat('%','s','%')这样写的
但后面发现实际上oracle中不支持concat的三个参数的拼接,需要更正为
select*fromSYS_MENUwhereurllikeconcat(concat('%',#{roleName}),'%')
或者使用
select*fromSYS_MENUwhereurllike'%'||#{roleName}||'%';
以上这篇mybatis中bind标签和concat的使用说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。