LambdaQueryWrapper使用inSql
时间: 2023-12-13 10:34:23 浏览: 807
LambdaQueryWrapper是MyBatis-Plus提供的一个查询构造器,可以用于构建复杂的SQL查询语句。其中,inSql方法可以用于将子查询的结果作为in条件进行查询。使用方法如下:
```java
List<Integer> groupIdds = Arrays.asList(1, 2, 3, 4);
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.inSql(User::getId, "SELECT id FROM user WHERE status = 1")
.in(User::getGroupId, groupIdds);
List<User> userList = userMapper.selectList(queryWrapper);
```
上述代码中,我们首先定义了一个groupIdds列表,然后创建了一个LambdaQueryWrapper对象queryWrapper。接着,我们使用inSql方法将子查询的结果作为id字段的in条件进行查询,同时使用in方法将groupIdds列表作为groupId字段的in条件进行查询。最后,我们使用selectList方法执行查询,并将结果保存在userList列表中。
相关问题
LambdaQueryWrapper.insql中传值
LambdaQueryWrapper提供了inSql方法来实现in语句的查询,可以通过以下方式传值:
```java
LambdaQueryWrapper<Driver> queryWrapper = new QueryWrapper<Driver>().lambda();
queryWrapper.inSql(Driver::getServiceId, "select id from service where name like '%滴滴%'");
List<Driver> drivers = driverService.list(queryWrapper);
```
上述代码中,inSql方法的第一个参数是要查询的字段,第二个参数是一个字符串,字符串中包含了一个子查询语句,该子查询语句返回的结果将作为in语句的参数进行查询。
LambdaQueryWrapper 怎么使用sql语句的not in
LambdaQueryWrapper可以使用notIn方法来实现SQL语句的not in操作。以下是使用LambdaQueryWrapper进行not in操作的示例代码:
```java
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
public class Example {
public static void main(String[] args) {
LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.notIn(User::getId, 1, 2, 3);
// 生成的SQL语句类似:WHERE id NOT IN (1, 2, 3)
// 其他查询条件可以继续链式调用
queryWrapper.eq(User::getStatus, 1)
.likeRight(User::getName, "abc");
// 执行查询操作
List<User> userList = userDao.selectList(queryWrapper);
}
}
```
在上述示例中,LambdaQueryWrapper的notIn方法接受两个参数,第一个参数是实体类的属性,第二个参数是不包含的值。生成的SQL语句中使用了NOT IN关键词来实现not in操作。
阅读全文