LambdaQueryWrapper.or()和.and()具体用法案例,.and()中是空报错如何解决
时间: 2024-03-15 16:42:08 浏览: 131
LambdaQueryWrapper 是 MyBatis-Plus 提供的一个用于构造 SQL 查询条件的工具类。其中,.or() 和 .and() 方法都是用于连接多个查询条件的。
具体用法如下:
1. .or()
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, "张三").or().eq(User::getName, "李四");
上述代码中,.or() 方法用于将两个查询条件通过 OR 连接起来,查询结果为姓名为“张三”或者“李四”的用户。
2. .and()
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, "张三").and(wrapper -> wrapper.eq(User::getAge, 18));
上述代码中,.and() 方法用于将两个查询条件通过 AND 连接起来,查询结果为姓名为“张三”且年龄为 18 岁的用户。注意,.and() 方法的参数是一个 Lambda 表达式,用于构造第二个查询条件。
如果 .and() 中是空的,会报错,解决方法是使用 LambdaQueryWrapper 自身的 eq()、ne()、gt()、ge()、lt()、le() 方法构造查询条件,例如:
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, "张三").and(wrapper -> {});
上述代码中,第二个查询条件为空,因此使用了一个空的 Lambda 表达式。可以改写成如下形式:
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(User::getName, "张三").eq(User::getAge, null);
上述代码中,第二个查询条件使用了 eq() 方法,并将值设为 null,相当于没有加入任何查询条件。
阅读全文