QueryWrapper 多列 in
时间: 2023-07-12 15:18:27 浏览: 250
如果要使用 QueryWrapper 实现多列 in 查询,可以使用 QueryWrapper 的 in 方法。该方法接受一个 Map 对象作为参数,其中 key 表示要查询的字段名,value 表示要查询的值列表。
下面是一个示例代码:
```java
Map<String, List<Integer>> columnMap = new HashMap<>();
columnMap.put("id", Arrays.asList(1, 2, 3));
columnMap.put("age", Arrays.asList(20, 30, 40));
List<User> userList = new QueryWrapper<User>()
.in(columnMap)
.list();
```
该代码使用 QueryWrapper 查询 id 列或 age 列中包含 1、2、3、20、30、40 的用户,并将查询结果存储在 userList 中。
需要注意的是,如果查询的多个字段中有一个字段值为 null,那么该字段将会被忽略,不参与查询。如果查询的多个字段中有一个字段值为空列表,那么该字段将会被认为是无效查询条件,也不参与查询。
相关问题
QueryWrapper 组合in
如果要使用 QueryWrapper 实现多组 in 查询,并使用 and 或 or 操作符进行组合,可以使用 QueryWrapper 的 and 和 or 方法,这两个方法接受一个 Lambda 表达式作为参数,该表达式返回一个 QueryWrapper 对象,表示要组合的查询条件。
下面是一个示例代码:
```java
List<List<Object>> values1 = Arrays.asList(
Arrays.asList("xxx", "xx"),
Arrays.asList("yyy", "yy")
);
List<List<Object>> values2 = Arrays.asList(
Arrays.asList("zzz", "zz"),
Arrays.asList("www", "ww")
);
List<User> userList = new QueryWrapper<User>()
.and(qw -> qw.in("A", values1))
.or(qw -> qw.in("B", values2))
.list();
```
该代码使用 QueryWrapper 查询 A 列中包含 ("xxx", "xx") 或 ("yyy", "yy"),并且 B 列中包含 ("zzz", "zz") 或 ("www", "ww") 的用户,并将查询结果存储在 userList 中。其中 and 方法表示使用 and 操作符组合两个查询条件,or 方法表示使用 or 操作符组合两个查询条件。
需要注意的是,and 和 or 方法的参数是一个 Lambda 表达式,表示要组合的查询条件。在 Lambda 表达式中,需要使用一个新的 QueryWrapper 对象来构建查询条件。
QueryWrapper in分片
QueryWrapper 是 MyBatis-Plus 中的一个查询条件构造器,它提供了很多方便的方法来拼接 SQL 查询条件。在分片环境下,我们可以使用 QueryWrapper.in 方法来实现对分片键的 IN 查询。例如:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.in("sharding_key", "value1", "value2", "value3");
List<User> userList = userMapper.selectList(wrapper);
```
其中,"sharding_key" 是分片键的列名,"value1", "value2", "value3" 是分片键的取值。当分片键为多列时,可以使用 wrapper.inSql 方法来实现 IN 查询。例如:
```java
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.inSql("sharding_key1, sharding_key2", "SELECT sharding_key1, sharding_key2 FROM table WHERE ...");
List<User> userList = userMapper.selectList(wrapper);
```
其中,"sharding_key1, sharding_key2" 是分片键的列名,"SELECT sharding_key1, sharding_key2 FROM table WHERE ..." 是一个查询语句,用于获取分片键的取值。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)