sql实现模糊查询(idea:mapper层)

模糊查询是针对字符串操作的。

一、一般语句为:

SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件;

eg1: 将student表中,列名name中包含的数据全部查询出来。

select * from student where name like '%张%'

eg2:将sys_org_info表中,列名org_name中包含北京的数据全部查询出来。

sql实现模糊查询(idea:mapper层)_第1张图片

二、在idea中的mapper层或是dao层 可以用:where name like '%'+#{}+'%'  (只要传参 #{} 中包括关键字 name 中任意字段就可查询出数据库中包括传参字段在内的所有数据)

eg1:  查出user_info表中,列名user_name中包含#{userName}传入的数据全部查询出来。

select * from user_info where user_name like '%'+#{userName}+'%' 

eg2:用postman测idea接口:

1》mapper层select中的代码:{ 想理解代码可看下文:拓展部分}

 SELECT
        a.*,
        b.org_name orgName
 FROM
        suite_terms a
 LEFT JOIN 
        (SELECT org_name FROM org_info where status=1) b
 ON 
        a.org_code = b.org_code
 WHERE 
        a.status=1 and a.is_hide_on_web=0
        
            and a.suite_name like '%'+#{text}+'%'
        

2》postman测试: 

sql实现模糊查询(idea:mapper层)_第2张图片

参考文章:


SQL实现模糊查询的几种方法总结   http://t.csdn.cn/CYMcN
SQL怎么实现模糊查询 http://t.csdn.cn/nIUoU

拓展部分:


mapper层select中的sql代码理解: 

Ⅰ、最终目的:查出表suite_terms(表a)中的所有数据和表org_info(表b)中的org_name(下文简称表a表b

Ⅱ、当a.org_code=b.org_code表a左连接表b

Ⅲ、左连接时对表b做了操作,查出表b中满足status=1的org_name

Ⅳ、最终查出数据需满足两个条件:

       第一:表a a.status=1 and a.is_hide_on_web=0;

       第二:传参符合a.suite_name关键字模糊查询条件。(eg:表中suite_name字段存储的数据中包含从业体检A(女)、从业体检B(女),传参“从业” 就可将数据库表中关键字为suite_name的字段中包含从业的都搜索出来)

Ⅴ、其中if判断为mybatis-plus的方法【我在controller层接受了两个参数:searchTypesearchtext,在Dao层将searchTypesearchtext重命名为type和text】,在if判断中: type->1 搜索医院;type->2 搜索体检套餐;#{text}表示输入值(此处的前端页面参考pdd选择搜索商铺或商品)

你可能感兴趣的:(数据库,sql语句,sql,database,intellij-idea,java)