wordpress网站新闻,东城网站开发公司,网站开发的软件介绍,可以做分销的淘客网站说明
实际生产中的数据#xff0c;一般不采用物理删除#xff0c;而采用逻辑删除#xff0c;也就是将一条记录的状态改为已删除。
逻辑删除#xff0c;本质上是更新操作。
MyBatis Plus 框架#xff0c;提供了逻辑删除功能。在配置了逻辑删除后#xff0c;增删改查和统…说明
实际生产中的数据一般不采用物理删除而采用逻辑删除也就是将一条记录的状态改为已删除。
逻辑删除本质上是更新操作。
MyBatis Plus 框架提供了逻辑删除功能。在配置了逻辑删除后增删改查和统计等功能都会使用逻辑删除字段来做相应的处理。比如查询时会只查出未删除的数据。
使用方法
全局配置
推荐在配置文件application.yml中统一配置逻辑删除的字段和删除/未删除状态对应的值。
mybatis-plus:global-config:db-config:logic-delete-field: deleted # 全局逻辑删除的实体字段名logic-delete-value: 1 # 逻辑已删除值(默认为 1)logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)实体类
在实体类中添加删除字段 deleted.
package com.example.web.entity;import lombok.Data;Data
public class User {private Long id;private String name;private Integer age;private String email;private Integer deleted;
}数据库
数据库添加删除字段。
测试类
新增
代码 Testpublic void insert() {User user new User();user.setId(9L);user.setName(赵一);user.setAge(25);user.setEmail(zhaoyiexample.com);userMapper.insert(user);}注意
MySQL的deleted字段配置了默认值0则新增的数据会自动填充默认值。 如果MySQL没有配置默认值则新增时deleted字段为 NULL。
官方推荐在数据库定义默认值。
配置了默认值 0新增 没配置默认值新增 删除 Testpublic void deleteById() {userMapper.deleteById(9);}逻辑删除将 deleted 字段的值改为 1 。
数据库中的数据还在deleted的值更新了。
查询
按照 id 查询和查询全部数据查出来的都是逻辑未删除的数据。已删除的数据是不会被查询出来的。 Testpublic void selectById() {User user userMapper.selectById(9);log.info(user{}, user);}Testvoid selectList() {ListUser users userMapper.selectList(null);log.info(users{}, users);}查询已经删除的数据查询结果是不存在的。 在查询的SQL语句中已经自动拼接了deleted0确保数据是未被删除的。
查询全部数据查询出来的也是没有删除的数据。
分页查询
分页查询也是查询出未逻辑删除的数据。 /*** 分页查询用户列表。* br* 查询条件查询第1页的数据每页10条数据。*/Testvoid selectPage() {LambdaQueryWrapperUser wrapper new LambdaQueryWrapper();IPageUser pageQuery new Page(1, 10);IPageUser page userMapper.selectPage(pageQuery, wrapper);log.info(当前页码{}, page.getCurrent());log.info(每 1 页的数据量{}, page.getSize());log.info(总数据量{}, page.getTotal());log.info(总页数{}, page.getPages());log.info(数据列表{}, page.getRecords());}统计 Testvoid count() {Long count userMapper.selectCount(null);log.info(count{}, count);}更新
更新数据的时候同样会进行数据是否已经删除的判断已经删除的数据就不会更新了。 Testpublic void updateById() {User user new User();user.setId(9L);user.setAge(50);user.setEmail(zhaoyi50example.com);userMapper.updateById(user);}