在使用Mybatis-Plus框架时,如果想要通过getOne方法获取那些逻辑删除标记为删除的数据记录,应该如何配置和操作?
时间: 2024-11-03 22:11:44 浏览: 7
在Mybatis-Plus框架中,逻辑删除是一种常用的数据软删除方式,它通过在数据表中设置一个逻辑删除字段(通常是布尔类型字段),来标记数据是否被逻辑删除。默认情况下,Mybatis-Plus的查询方法(包括getOne)不会返回逻辑删除标记为删除的数据记录。但是,我们可以通过一些配置或方法重载来实现这一需求。
参考资源链接:[mybatis-plus getOne和逻辑删除问题详解](https://wenku.csdn.net/doc/6412b481be7fbd1778d3fd0b?spm=1055.2569.3001.10343)
首先,确保你的实体类中有逻辑删除字段,并且已经使用了@TableLogic注解。例如:
```java
@TableLogic
private Boolean deleted;
```
在配置文件application.yml或application.properties中,需要指定逻辑删除字段名和默认值:
```yaml
mybatis-plus:
global-config:
db-config:
logic-delete-field: deleted # 逻辑删除字段名
logic-delete-value: 1 # 逻辑已删除值
logic-not-delete-value: 0 # 逻辑未删除值
```
或在properties文件中:
```properties
mybatis-plus.global-config.db-config.logic-delete-field=deleted
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
```
配置完成后,如果想要获取逻辑删除标记为删除的数据记录,可以使用如下方法:
```java
LambdaQueryWrapper<T> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(ExampleEntity::getDeleted, true); // 假设已删除标记为true
ExampleEntity exampleEntity = exampleMapper.selectOne(queryWrapper);
```
这里的selectOne方法会被Mybatis-Plus代理,自动忽略逻辑删除字段,因此你需要手动编写查询条件。
另一个选项是通过重写BaseMapper中的getOne方法,以使用不考虑逻辑删除的查询。例如:
```java
@Override
default T getOne(Wrapper<T> queryWrapper) {
queryWrapper.last(
参考资源链接:[mybatis-plus getOne和逻辑删除问题详解](https://wenku.csdn.net/doc/6412b481be7fbd1778d3fd0b?spm=1055.2569.3001.10343)
阅读全文