mybatis-plus QueryWrapper 的 and/or 用法

这篇博客详细介绍了如何利用QueryWrapper和Lambda表达式在Java中构建复杂的SQL查询语句。通过实例展示了如何创建最外层及内部的查询条件,如等式、不等式和逻辑运算,以实现对数据表的有效筛选。
摘要由CSDN通过智能技术生成

先说结论:一个括号等于一个QueryWrapper

例:

假设一句sql

select * from tbl where 1 = 1 (and is_deleted = 0 and ((id = 'id1' and status != 1) or (id = 'id2' and status != 2)))

where 1 =1 之后 4个括号,即4个QueryWrapper。

实体类:

@Data
@TableName("tbl")
@Accessors(chain = true)
public class TestEntity {

    private String id;

    private Integer status;

    private Integer isDeleted;
}

最外层一个wrapper,child一个wrapper,sub1、sub2两个wrapper。

Wrappers.<TestEntity>lambdaQuery()
                .eq(TestEntity::getIsDeleted, 0)
                .and(child ->
                        child.or(sub1 ->
                                    sub1.eq(TestEntity::getId, "id1")
                                        .ne(TestEntity::getStatus, 1))
                                .or(sub2 ->
                                    sub2.eq(TestEntity::getId, "id1")
                                        .ne(TestEntity::getStatus, 2)));

小功告成在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值