模糊查询是针对字符串操作的。
一、一般语句为:
SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件;
eg1: 将student
表中,列名name
中包含张
的数据全部查询出来。
select * from student where name like '%张%'
eg2:将sys_org_info
表中,列名org_name
中包含北京
的数据全部查询出来。
二、在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
<if test="type==2">
and a.suite_name like '%'+#{text}+'%'
</if>
2》postman测试:
参考文章:
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层接受了两个参数:searchType和searchtext,在Dao层将searchType和searchtext重命名为type和text】,在if判断中: type->1 搜索医院;type->2 搜索体检套餐;#{text}表示输入值(此处的前端页面参考pdd选择搜索商铺或商品)