mybatis使用关键字模糊查询多个字段
1. 需求简述
在搜索框中输入关键字,根据关键字查询多个字段的值
2. mybatis中文文档地址
mybatis中文文档网站:https://mybatis.org/mybatis-3/zh/dynamic-sql.html
3. 解决方案
使用
bind
标签和mysql的CONCAT_WS()
函数
3.1 concat.ws()函数
mysql函数文档地址:https://www.mysqlzh.com/doc/116.html
- 语法为:CONCAT_WS(separator,str1,str2,…)
- CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。
- 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。
- CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
3.2 bind
标签
bind
元素允许在 OGNL 表达式以外创建一个变量,并将其绑定到当前的上下文
<if test="keyword != null and keyword != ''">
<!-- bind标签的两个属性都是必选项,name为绑定到上下文的变量名,value为OGNL表达式 -->
<bind name="temp" value="'%' + keyword + '%'"/>
and CONCAT_WS("-", username, nickname) like #{temp}
</if>