mybatisplus的逻辑删除
时间: 2023-09-26 22:06:39 浏览: 66
MyBatisPlus提供了逻辑删除功能,它与物理删除有一些区别。在使用常规的逻辑删除方案时,我们需要考虑很多因素,为了提高效率,更推荐使用MyBatisPlus提供的逻辑删除方案。使用MyBatisPlus的逻辑删除功能非常简单。开启逻辑删除功能后,MyBatisPlus在删除、查询和更新时会自动加上条件deleted=0,即只对没有被删除的数据进行操作。在建表时,建议对deleted字段做默认限制,默认为0(未删除),插入数据时这个值可以不用设置。对于自己在xml文件中定义的接口方法,MyBatisPlus不会自动开启逻辑删除功能,需要我们自己维护逻辑删除功能。在查询时,MyBatisPlus会自动追加where条件过滤掉已删除的数据,并且使用wrapper.entity生成的where条件会忽略该字段。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
相关问题
mybatisplus 逻辑删除
MyBatisPlus提供了逻辑删除方案,逻辑删除不是真正的删除,它只是更新了逻辑删除标识。在使用MyBatisPlus的逻辑删除功能时,我们需要在实体类的字段上加上注解,告诉MyBatisPlus这是逻辑删除标识。这样在进行CRUD操作时,MyBatisPlus会自动给我们加上限制条件,只能删除逻辑存在的数据。如果我们想要自定义SQL语句来进行CRUD操作,就必须自己加上逻辑删除的限制条件。使用MyBatisPlus的逻辑删除方案可以提高开发效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* [MyBatisPlus之逻辑删除](https://blog.csdn.net/qq_43695957/article/details/123504418)[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_1"}}] [.reference_item style="max-width: 50%"]
- *2* *3* [MyBatis-Plus 之逻辑删除](https://blog.csdn.net/qq_37960603/article/details/109111941)[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_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
mybatisplus逻辑删除
MybatisPlus提供了逻辑删除的功能,可以通过在实体类中添加一个标识删除的字段(如`is_deleted`)来实现。步骤如下:
1. 在实体类中添加`@TableLogic`注解,并指定逻辑删除的值和未删除的值,如:
```java
@Data
public class User {
private Long id;
private String name;
private Integer age;
@TableLogic(value = "0", delval = "1")
private Integer deleted;
}
```
上述代码中,`@TableLogic`注解中的`value`属性表示未删除的值,默认为`0`,`delval`属性表示删除的值,默认为`1`。
2. 在MybatisPlus的配置文件中开启逻辑删除,如:
```java
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
@Bean
public PaginationInterceptor paginationInterceptor() {
PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
// 开启逻辑删除
paginationInterceptor.setSqlParser(new LogicSqlParser());
return paginationInterceptor;
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
```
上述代码中,通过`setSqlParser`方法将`LogicSqlParser`注入到`PaginationInterceptor`中,开启逻辑删除功能。
3. 在Mapper接口中继承`BaseMapper`,如:
```java
public interface UserMapper extends BaseMapper<User> {
}
```
继承`BaseMapper`可以直接使用MybatisPlus提供的CRUD方法,包括逻辑删除的方法。
4. 使用逻辑删除的方法进行删除操作,如:
```java
@Autowired
private UserMapper userMapper;
@Test
public void testDelete() {
int rows = userMapper.deleteById(1L);
System.out.println(rows);
}
```
上述代码中,使用`deleteById`方法进行逻辑删除,将id为1的记录的`is_deleted`字段值设置为`1`。
总结:通过在实体类中添加`@TableLogic`注解,并在MybatisPlus的配置文件中开启逻辑删除的功能,即可使用MybatisPlus提供的逻辑删除方法进行删除操作。