mybatis

您所在的位置:网站首页 mybatisplus查询数据库最近一周的数据 mybatis

mybatis

2023-09-21 13:27| 来源: 网络整理| 查看: 265

文章目录 什么是逻辑删除?为什么用到逻辑删除?在springboot使用Mybatis-Plus提供的逻辑删除1、在application.yml配置2、 实体类字段上加上@TableLogic注解演示

什么是逻辑删除?

逻辑删除的本质是修改操作,并不是真正的删除,而是在表中将对应的是否删除标识(delete_flag)做修改操作。比如0是未删除,1是删除。在逻辑上数据是被删除的,但数据本身依然存在库中。 逻辑删除sql语句为:

update user set deleted=1 where id = 1 and deleted=0

这种设计,后端每次向数据库查询数据时,只查deleted=0(未删除)的数据。拿上面sql举例,那么客户端进行查询id为1的信息,服务器就不会提供信息。 查询sql为:

select id,name,deleted from user where deleted=0 为什么用到逻辑删除?

比如:在一家销售公司中,有两个员工在一月份离职了,后台管理人员在办离职时,如果直接将数据库中与这两个员工相关的信息删除了,那么当经理想要看一月份的销售记录的时候,只能看到部分销售记录,销售金额对不上。这种情况肯定是不允许发生的 如下图: 本来一月总共销售了17,000,00元,结果删除后只剩下了5,000,00。 在这里插入图片描述 只需要在员工工号后面加delete_flag字段,用于标记是否被删除即可。

在springboot使用Mybatis-Plus提供的逻辑删除

字段类型支持说明: 支持所有数据类型(推荐使用 Integer,Boolean,LocalDateTime) 如果数据库字段使用datetime,逻辑未删除值和已删除值支持配置为字符串null,另一个值支持配置为函数来获取值如now()

1、在application.yml配置 mybatis-plus: global-config: db-config: logic-delete-field: flag # 全局逻辑删除的实体字段名(since 3.3.0,配置后可以忽略不配置步骤2) logic-delete-value: 1 # 逻辑已删除值(默认为 1) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0) 2、 实体类字段上加上@TableLogic注解 @Data public class UserPO implements Serializable { @TableId(type = IdType.ASSIGN_ID) private Long id; private String userName; private String password; private String nickName; @TableLogic private int delFlag; } 演示

数据库t_user表中数据: 在这里插入图片描述 UserPOMapper:

@Mapper public interface UserPOMapper extends BaseMapper { }

IUserService:

public interface IUserService extends IService { }

IUserServiceImpl:

@Service public class IUserServiceImpl extends ServiceImpl implements IUserService { }

Controller:

@RequestMapping("/open/del") public ResultUtil del(UserParam userParam){ UserPO one = iUserService.getOne(new LambdaQueryWrapper() .eq(UserPO::getUserName, userParam.getUserName())); boolean b = iUserService.removeById(one); System.out.println(b); return ResultUtil.success(b); }

ResultUtil:

@Data public class ResultUtil { private String code; private String message; private Object data; public static ResultUtil success(Object data){ ResultUtil resultUtil = new ResultUtil(); resultUtil.setCode("200"); resultUtil.setMessage("请求成功"); resultUtil.setData(data); return resultUtil; } }

浏览器请求: 在这里插入图片描述 数据库t_user表中数据: 可以看到,加了@TableLogic注解的字段对应的数据库字段,由0(未删除)改为1(已删除) 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3