LambdaQueryWrapper如何使用不属于表达式
时间: 2024-12-08 07:20:30 浏览: 6
LambdaQueryWrapper是阿里巴巴DataXstream框架下的一个工具类,它提供了一种基于lambda表达式的SQL查询构建方式,使得SQL编写更简洁、易读。然而,如果你想要使用一些Java API而非lambda表达式,LambdaQueryWrapper也支持传统的匿名内部类或者静态方法。
例如,如果你想使用非lambda表达式的方式创建一个查询条件,你可以这样做:
```java
// 使用匿名内部类
List<User> users = userMapper.selectList(new LambdaQueryWrapper<User>()
.eq("username", "testUser")
.and().ne("status", UserStatus.INACTIVE));
```
```java
// 或者使用静态方法
List<User> users = userMapper.selectList(UserQueryWrapper.builder()
.eq("username", "testUser")
.notEq("status", UserStatus.INACTIVE)
.build());
```
在这里,`UserQueryWrapper.builder()`返回的是一个Builder对象,你可以通过调用它的方法来逐步添加查询条件,最后用`.build()`生成最终的查询条件。虽然这种方式不如lambda表达式那么直观,但它仍然能够完成同样的功能。
相关问题
LambdaQueryWrapper表达式查询 nested的使用
LambdaQueryWrapper是MyBatis-Plus框架提供的一个查询条件构造器,用于构建复杂的查询条件。在使用LambdaQueryWrapper进行查询时,可以通过nested方法来实现嵌套查询。
嵌套查询是指在查询条件中嵌套使用LambdaQueryWrapper对象,以构建更复杂的查询条件。通过nested方法,可以将一个LambdaQueryWrapper对象作为参数传入,实现嵌套查询。
下面是一个示例代码,演示了如何使用LambdaQueryWrapper进行嵌套查询:
```java
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 20)
.nested(w -> w.eq(User::getGender, "male").or().eq(User::getGender, "female"));
List<User> userList = userMapper.selectList(wrapper);
```
在上述示例中,首先创建了一个LambdaQueryWrapper对象wrapper,并设置了一个简单的查询条件:年龄等于20。然后通过nested方法,在LambdaQueryWrapper对象中嵌套了一个新的LambdaQueryWrapper对象w,并在新的对象w中设置了一个嵌套查询条件:性别等于"male"或者性别等于"female"。
最后,调用selectList方法执行查询,并将结果保存在userList中。
通过嵌套查询,可以构建更复杂的查询条件,满足不同的业务需求。
LambdaQueryWrapper使用or
LambdaQueryWrapper可以使用or连接多个查询条件。要使用or连接的话,可以使用lambda表达式的方式来实现。下面是一个例子:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().eq(User::getName, "aa")
.or()
.eq(User::getName, "bb");
```
在这个例子中,我们使用了lambda表达式来指定查询条件。首先,我们使用`eq`方法来指定要查询的字段和对应的值。然后,我们通过调用`or`方法,表示接下来的查询条件是和前面的条件是或关系。
另外,如果需要使用or连接一个集合内的所有元素,可以使用类似的方式来实现。下面是一个示例:
```java
List<String> nameList = Lists.newArrayList("aa", "bb", "cc");
String firstName = nameList.get(0);
nameList.remove(0);
queryWrapper.lambda().eq(User::getName, firstName);
for (String name : nameList) {
queryWrapper.lambda().or().eq(User::getName, name);
}
```
在这个例子中,我们首先指定了第一个查询条件,然后使用循环遍历集合的剩余元素,并通过调用`or`方法,将每个元素和前面的条件进行或关系连接。
综上所述,LambdaQueryWrapper可以使用lambda表达式和`or`方法来实现or连接的查询条件。
阅读全文