mybatis批量模糊查询、多选模糊查询

工作上的问题 专栏收录该内容
1 篇文章 0 订阅

SQL语句

先要知道如何进行模糊查询,在原有的基础上进行修改,一般都在mysql上写好SQL语句,再换至mybatis里拼写
模糊查询如下:

SELECT * FROM `order` WHERE `id` LIKE CONCAT('%','Check','%');

表:order
字段:id
CONCAT作用:将多个字符串连接成一个字符串
Check:你要匹配的数据
下面在原有基础上加上支持批量(支持多选),如下:

SELECT * FROM `order` WHERE id LIKE CONCAT('%','Check','%') OR id LIKE CONCAT('%','Open','%');

想要再支持更多,则在后面反复添加OR id LIKE CONCAT(’%’,’**’,’%’)
SQL原型基本上出来了,下面也要在mybatis中操作了

前提

数据库字段封装了实体类,是一个字符串类型
private String Id;
这就意味着前端页面带过来的数据就是字符串类型,必须用逗号隔开
比如:String id = “Check,Open”;
因为涉及到批量的问题,mybatis中优先考虑到 foreach

<foreach item="Id" collection="Id" open="(" separator="," close=")">
            		#{Id}
</foreach>

但是只有有一个问题,就是Id传过来的是字符串类型,不能这样直接迭代,所以又想到了用split(’,’)这个分隔
后续还需要用OR关键字要连接模糊查询,所以总结一下,得出如下代码

结论代码

<if test="Id != null  and Id != '' "> AND 
             	<foreach item="IdStr" collection="Id.split(',')" open="(" separator="OR" close=")">
            		id LIKE CONCAT('%', #{IdStr}, '%')
        		</foreach>
</if>

我在控制台打印出执行的SQL语句如下:

Preparing:select * from order WHERE deal_result IS NULL and ( id LIKE CONCAT('%', ?, '%') OR id LIKE CONCAT('%', ?, '%') );
Parameters:Check(String), Open(String)

这样就可以进行多选的模糊查询了

  • 6
    点赞
  • 0
    评论
  • 6
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值