Mybatis-Plus中or()的使用避坑

文章介绍了在Java中使用QueryWrapper进行数据库查询时,如何正确运用`or()`连接不同条件以避免数据偏差。作者强调了`or()`的使用位置以及与`.and()`的区别,确保查询结果的准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.连接 or()

当需要简单的将两个条件或连接,则最直接的写法为:

QueryWrapper<User> queryWrapper = new QueryWrapper<User>().
eq("status",0).
or().
eq("status",1);

//sql条件为  select * from user where status=0 or status=1

2.连接 or()

当多个条件共同拼接,则最直接的写法为: 要么把or()拼接放最前面,要么用queryWrapper.and(

qr.eq("status", 1).or().like("status", 2)),要不查询的数据会有偏差,queryWrapper.and相当于把两个条件()一块;

QueryWrapper<User> queryWrapper = new QueryWrapper<User>().
eq("status",0).
or().
eq("status",1)
eq("user_name","张三");

//sql条件为  select * from user where status=0 or status=1 and user_name='张三'




QueryWrapper<User> queryWrapper = new QueryWrapper<User>().
eq("user_name","张三").
eq("status",0).
or().
eq("status",1);

//sql条件为  select * from user where user_name='张三' and  status=0 or status=1 
查询出来的数据和select * from user where status=0 or status=1 and  user_name='张三' 不一致

QueryWrapper<User> queryWrapper = new QueryWrapper<User>().
eq("user_name","张三").and(q->q.eq("status",0).
or().
eq("status",1));

select * from user where select * from user where user_name='张三' and (status=0 or status=1 ) 查询出来的数据和select * from user where status=0 or status=1 and  user_name='张三' 一致

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值