mybatis mysql 实现一个搜索框对多个字段进行模糊查询
在开发过程中,我们会遇到一个搜索框要进行多个字段的模糊查找。
在mybatis中,可以使用动态SQL来进行多个字段的模糊查询。
1.第一种方式:or
代码如下(示例):
<select id="getDocumentList" resultType="YourResultClass">
select * from admin_document
where is_deleted = 0
<if test="params.keyword != '' and params.keyword != null">
AND
(
document_name LIKE CONCAT ('%',#{params.keyword},'%')
OR
title LIKE CONCAT ('%',#{params.keyword},'%')
OR
author_name LIKE CONCAT ('%',#{params.keyword},'%')
)
</if>
</select>
上述示例中,admin_document为要查询的表名,document_name、title和author_name为需要模糊查询的三个字段。
通过判断传入参数中的document_name、title和author_name是否不为空,如果都不为空则构建相应的LIKE语句进行模糊查询。
2.第二种方式:CONCAT
代码如下(示例):
<select id="getDocumentList" resultType="YourResultClass">
select * from admin_document
where is_deleted = 0
<if test="params.keyword != '' and params.keyword != null">
AND CONCAT (`document_name`,`title`,`author_name`) LIKE CONCAT ('%',#{params.keyword},'%')
</if>
</select>
注意:CONCAT(document_name,title)其中的字段需要使用``来引起来,不然会报错!