首页 > 其他分享 >Mybatis-plus逻辑删除

Mybatis-plus逻辑删除

时间:2023-12-01 11:11:07浏览次数:28  
标签:逻辑 删除 deleted plus logic Mybatis id delete

转载自:www.javaman.cn

1、application.yml配置

  1. mybatis-plus: 表示这是 MyBatis-Plus 的配置部分。
  2. global-config: 全局配置。
  3. db-config: 数据库相关配置。
  4. logic-delete-field: 指定逻辑删除的字段名。在这里,指定的字段名是 deleted。这意味着,当你调用 MyBatis-Plus 的逻辑删除功能时,它实际上会更新这个 deleted 字段的值,而不是真正地从数据库中删除记录。
  5. logic-not-delete-value: 指定表示记录未被逻辑删除的值。在这里,值为 0。这意味着,当 deleted 字段的值为 0 时,记录被视为未被删除。
  6. logic-delete-value: 指定表示记录已被逻辑删除的值。在这里,值为 1。这意味着,当 deleted 字段的值为 1 时,记录被视为已被删除,尽管它在物理上仍然存在于数据库中。

逻辑删除的好处是,你可以轻松地从查询中排除被标记为删除的记录,而不需要实际地从数据库中移除它们。这在某些场景中很有用,例如当你需要保留历史数据或需要恢复被删除的数据时。

mybatis-plus:
  global-config:
    db-config:
      logic-delete-field: deleted
      logic-not-delete-value: 0
      logic-delete-value: 1

2、实体类

在你的实体类中,添加对应的逻辑删除字段,并使用 @TableLogic 注解标记它。例如:

@Data  
public class User {  
    private Long id;  
    private String name;  
    @TableLogic  
    private Integer deleted;  
}

3、Mapper层

继承BaseMapper的Dao层,在调用delete方法时,会自动进行逻辑删除,执行的语句:

update sys_user set deleted=1 where id=? and deleted=1

public interface SysUserMapper extends MyBaseMapper<SysUser> {

    SysUser findByUserName(String username);

    SysUser findByUserId(Long id);

    List<SysUser> findUserList(@Param(Constants.WRAPPER) Wrapper wrapper);
}

4、service层

继承了ServiceImpl,实现IService的接口,执行remove方法时如:removeById,会执行下列语句:

update sys_user set deleted=1 where id=? and deleted=1

public void del(Long id) {
    boolean flag = this.removeById(id);
}

标签:逻辑,删除,deleted,plus,logic,Mybatis,id,delete
From: https://www.cnblogs.com/dalaba/p/17869283.html

相关文章

  • mybatis mysql Data truncation: Incorrect integer value: '' for column 'xxx' at
     com.mysql.jdbc.MysqlDataTruncation:Datatruncation:Incorrectintegervalue:''forcolumn'n_before_group_id'atrow1 mybatisforeach插入时出现这个报错,原因是某字段插入空值时需要插入NULl而不是‘’ 解决办法:<choose><whentest="item.x......
  • [Unraid 系列 v6.10+] 8 删除 已挂载的zfs格式硬盘 中无用共享文件夹
    说明在使用zfs文件格式并格式化硬盘后,无法通过rm命令删除已共享的文件夹(哪怕已经删除共享)。示例:root@unraid:/mnt/disk2#rm-rappdata/rm:cannotremove'appdata/':Deviceorresourcebusy解决通过zfsdestroy-r命令删除文件夹。示例:root@unraid:/mnt/di......
  • 多数据源之mybatis配置的log无法打印
    多数据源打印sql日志配置:@Bean@ConfigurationProperties(prefix="mybatis.configuration")publicorg.apache.ibatis.session.ConfigurationglobalConfiguration(){returnneworg.apache.ibatis.session.Configuration();}@Be......
  • 82. 删除排序链表中的重复元素 II
    82.删除排序链表中的重复元素II2021年3月25日​数据量300,数据大小[-200,200]​题意很简单,就考验你指针的使用。​两种方法桶排序暴力法思路很简单,加个100的偏移量,然后全都存下来,再倒着存进链表里返回即可。classSolution{public:ListNode*deleteDuplicates(......
  • 83. 删除排序链表中的重复元素
    83.删除排序链表中的重复元素2021年3月26日删除排序链表中的重复元素II的简化版,while套while就行为了时间,指针都不删除吗?classSolution{public:ListNode*deleteDuplicates(ListNode*head){ListNode*p=head;while(p&&p->next){w......
  • SFTP文件本地及远程创建,上传,下载,删除,获取脚本
    关键参数:sftp_route:远程路径local_route:本地路径(windows需要r解析)header:txt表头字段(列表方式)data:txt内容信息(列表嵌套列表方式)filename_success:是否创建success文件默认为falsefilename:文件名称(无需带后缀默认为txt文件) 注意:上传文件需要带文件名称下载只需要到文件路......
  • 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号怎么删除
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下......
  • # yyds干货盘点 # 麻烦问一下Python采集到的文本列表中有大量的 ', ' 符号 想这种符号
    大家好,我是皮皮。一、前言前几天在Python铂金流群【泅渡】问了一个Python字符处理的问题,一起来看看吧。问题描述:麻烦问一下Python采集到的文本列表中有大量的  ','  符号 想这种符号怎么删除?二、实现过程这里【不上班能干啥!】和【瑜亮老师】分别给了一个指导,如下图所示:......
  • Oracle数据库 使用存储过程判断索引是否存在,再删除索引
    不多废话DECLAREindex_countNUMBER;BEGIN--判断索引UK_TEST_2是否存在SELECTCOUNT(*)INTOindex_countFROMuser_indexesWHEREindex_name='UK_TEST_2';IFindex_count>0THENEXECUTEIMMEDIATE'DROPINDEXU......
  • 一对多 多对多 添加记录,修改,删除
    一对多添加记录:publish=models.Publish.objects.create(name='北京出版社',addr='北京',phone='0536-12345678',email='邮箱地址')#新增西游记图书book=models.Book.objects.create(name='红楼梦',price='23.45',publish=publish)#pu......