Mybatis多个字段模糊匹配同一个值的案例

需求:

搜索框中可输入手机号,姓名,地址查询,后台需要对一个框中的多个字段做匹配查询。

搜索

可以在sql语句中做拼接条件查询:


AND CONCAT(r.name,a.name,a.phone,a.addr_detail) LIKE '%' #{condition} '%'

补充知识:在Mybatis xml使用mysql数据库进行多字段模糊查询(Like)

在mysql中使用Like进行一些简单轻量级的查询,并不需要考虑太多效率问题。

一、Like单字段查询比较简单。

没有特殊要求的话,直接使用%关键字%就进行左右匹配查询

.....

  ...
  
    SELECT c.* FROM contacts c
    WHERE c.delete_time IS NULL
    
      AND c.name LIKE concat('%',#{keyWord},'%')}
    
    ORDER BY c.create_time DESC
  

2、使用concat将多个字段拼接之后在进行模糊查询,相比第一种更推荐第二种,执行效率更好

.....

  ...
  
    SELECT c.* FROM contacts c
    WHERE c.delete_time IS NULL
    
      AND CONCAT(IFNULL(c.name,''),IFNULL(c.mobile,''),IFNULL(c.telephone,'')) LIKE concat('%',#{keyWord},'%')}
    
    ORDER BY c.create_time DESC