使用mybatisplus,并开启了逻辑删除;如何在部分方法中不携带逻辑删除判断
时间: 2024-05-14 07:19:31 浏览: 8
你可以使用MybatisPlus提供的Wrapper类来实现该功能。具体而言,你可以创建一个不携带逻辑删除判断的Wrapper类,并将其作为参数传递给需要取消逻辑删除判断的方法。例如,以下代码实现了在使用mybatisplus的分页查询方法中取消逻辑删除判断:
```java
Page<User> page = new Page<>(1, 10);
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("status", 1); // 添加其它判断条件
// 创建一个不携带逻辑删除判断的Wrapper类
Wrapper<User> wrapper = Wrappers.<User>lambdaQuery().and(queryWrapper);
// 在调用分页查询方法时传递该Wrapper类作为参数
userMapper.selectPage(page, wrapper);
```
在这个例子中,我们首先创建了一个QueryWrapper对象,并添加了其它的查询条件。然后,我们使用Wrappers.lambdaQuery()创建了一个lambda表达式Wrapper对象,并使用and()方法将前面创建的QueryWrapper对象作为参数传递进去。这样,我们就得到了一个不携带逻辑删除判断的Wrapper对象,并将其作为参数传递给了selectPage()方法。通过这种方式,我们就实现了在分页查询方法中取消逻辑删除判断的功能。
相关问题
mybatisPlus 逻辑删除方法
MyBatis-Plus提供了逻辑删除的功能,可以通过标记数据的删除状态而不是直接物理删除数据。以下是使用MyBatis-Plus进行逻辑删除的方法:
1. 在数据库表中添加一个表示删除状态的字段,例如`is_deleted`或`deleted`,通常使用整数类型(0表示未删除,1表示已删除)或布尔类型(false表示未删除,true表示已删除)。
2. 在实体类中添加该字段,并使用`@TableLogic`注解标记该字段为逻辑删除字段。例如:
```java
@TableLogic
private Integer isDeleted;
```
或者
```java
@TableLogic
private Boolean deleted;
```
3. 在MyBatis-Plus的配置文件(通常是`application.yml`或`application.properties`)中配置逻辑删除的全局属性,例如:
```yaml
mybatis-plus:
global-config:
db-config:
logic-delete-value: 1 # 逻辑删除值
logic-not-delete-value: 0 # 逻辑未删除值
logic-delete-field: is_deleted # 逻辑删除字段名
```
4. 使用MyBatis-Plus提供的方法进行逻辑删除。例如,可以使用`delete()`方法或`deleteById()`方法进行逻辑删除。被标记为逻辑删除的数据在执行删除操作后,`is_deleted`字段会被更新为逻辑删除值。
```java
// 根据条件进行逻辑删除
int rows = mapper.delete(new QueryWrapper<User>().eq("age", 18));
// 根据主键进行逻辑删除
int rows = mapper.deleteById(1);
```
这样,你就可以使用MyBatis-Plus的逻辑删除功能来处理数据的软删除需求了。
mybatisplus默认的逻辑删除字段,如何在使用QueryWrapper查询的时候去掉
在 MyBatis-Plus 中,如果使用了逻辑删除功能,那么在查询时会默认带上逻辑删除字段的条件。如果想要在使用 QueryWrapper 查询时去掉逻辑删除字段的条件,可以通过 `QueryWrapper` 的 `ignoreLogicDel` 方法来实现。
具体来说,可以在创建 `QueryWrapper` 对象时,调用 `ignoreLogicDel(true)` 方法来忽略逻辑删除字段的条件,示例如下:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "张三")
.eq("age", 20)
.ignoreLogicDel(true); // 忽略逻辑删除字段的条件
List<User> userList = userMapper.selectList(queryWrapper);
```
在上面的示例中,我们创建了一个 `QueryWrapper` 对象,并设置了两个查询条件:`name = '张三'` 和 `age = 20`。同时,我们也调用了 `ignoreLogicDel(true)` 方法来忽略逻辑删除字段的条件。这样,在执行查询时,就不会带上逻辑删除字段的条件了。
需要注意的是,`ignoreLogicDel` 方法只对当前 `QueryWrapper` 对象有效,如果需要在多个查询中都忽略逻辑删除字段的条件,需要在每个 `QueryWrapper` 对象上都调用一次该方法。
相关推荐
![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)
![](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)