mybatis plus notin
时间: 2023-09-25 22:11:30 浏览: 143
在MyBatis Plus中,使用.notIn()方法可以实现not in的功能。例如:wrapper.notIn("字段名", 值1, 值2, ...)可以将指定字段的值排除在查询结果之外。这样可以筛选出不包含指定值的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* *3* [mybatisplus 增删改查&使用技巧](https://blog.csdn.net/qq_37570710/article/details/122443318)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"]
[ .reference_list ]
相关问题
mybatis-plus notIn 忽略空
如果你使用 MyBatis-Plus 的 notIn 方法进行查询时,如果传入的参数为空,会抛出 NullPointerException 异常。为了避免这种情况,你可以使用 MyBatis-Plus 提供的 Wrappers 工具类中的 lambdaQuery 方法,手动构建查询条件,然后在查询时将其传入,如下所示:
```java
List<Integer> ids = new ArrayList<>();
ids.add(1);
ids.add(2);
ids.add(null);
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.lambda().notIn(User::getId, ids.stream().filter(Objects::nonNull).collect(Collectors.toList()));
List<User> userList = userMapper.selectList(wrapper);
```
在上面的例子中,我们手动构建了一个 QueryWrapper 对象,然后使用 lambdaQuery 方法构建了查询条件,最后调用 notIn 方法进行查询。由于我们使用了 filter 方法过滤了空值,因此即使传入的 ids 中包含空值,也不会抛出异常。
mybatis-plus notIn会排除空的字段
是的,MyBatis-Plus 的 notIn 方法会自动排除空值的字段。在不排除空值的情况下,如果传入的参数集合中包含空值,则会抛出 NullPointerException 异常。因此,MyBatis-Plus 在实现 notIn 方法时,会自动过滤掉传入参数集合中的空值。
例如,假设我们有一个 User 表,其中有一个状态字段 status,我们想要查询状态不为 1、2、3 的用户,我们可以使用 notIn 方法进行查询,如下所示:
```java
List<Integer> statusList = new ArrayList<>();
statusList.add(1);
statusList.add(2);
statusList.add(3);
QueryWrapper<User> wrapper = new QueryWrapper<User>();
wrapper.notIn("status", statusList);
List<User> userList = userMapper.selectList(wrapper);
```
在上面的代码中,我们传入了一个 statusList 集合,其中包含了 1、2、3 这三个值。MyBatis-Plus 会自动过滤掉这个集合中的空值,不对其进行查询。因此,即使 statusList 中包含空值,也不会对查询结果造成影响。
阅读全文