在项目中,一般会遇到这种情况:逻辑删除以及多关联不删除

逻辑删除(软删除):逻辑删除就是对要被删除的数据打上一个删除标记,通常使用一个is_deleted字段标示行记录是不是被删除(或者使用一个status字段代表所谓的“删除”状态),在逻辑上是数据是被删除的,但数据本身是依然存在的。

推荐课程:MySQL教程。

在前端页面中删除了,也不显示了,其实数据库中并没有删除,只是根据了一个状态字段,0启动,1停用的思路来达成。

所以逻辑删除就是只是将一个名为status字段进行更改,来达到前端页面是否显示的方式,其数据本身并没有被删除,想要恢复只需要改回status字段即可。

思路:

在XML中写查询SQL时,多加一个条件,库中的状态字段SELECT * FROM md_drainage_basin

and basin_name LIKE concat('%',#{basinName},'%')

AND state = #{state}

ORDER BY sort_order

那我们给前端页面时候的数据,就要自己在Java代码中进行默认操作,因为前端是不会在查询的传一个状态码的,后台自己生成mdDrainageBasin.setState(0);

List list = mdDrainageBasinMapper.findByQuery(mdDrainageBasin);

默认把状态0启动set到实体类中,再进行查询,这样前端看到的只有状态为0的数据

逻辑删除是把状态码进行更新,更新成1,调用update而不是delete,但考虑到多表关系,例如流域下面挂着水系,逻辑删除一条流域,那下面的水系也要进行逻辑删除不给与显示,这时可根据判断,如果流域下面有相应水系,则不删除,不然删除MdDrainageBasin mdDrainageBasin = mdDrainageBasinService.findById(id);

List list = mdWaterSystemMapper.findByWater(mdDrainageBasin.getBasinCode());

if (list.size() > 0) {

return ResponseMsgUtil.failure();

} else {

mdDrainageBasin.setState(1);

mdDrainageBasinService.update(mdDrainageBasin);

return ResponseMsgUtil.success(mdDrainageBasin);

}

根据前端传入的Id进行查询哪一条流域,这条流域下面有多少水系,有水系,不删除,没水系,删除

mysql如何逻辑删除_mysql逻辑删除如何恢复相关推荐

  1. mysql如何drop数据库_MySQL如何删除数据库

    MySQL删除数据库的方法:1.使用drop命令删除数据库,代码为[drop database ;]:2.使用PHP脚本删除,代码为[mysqli_query(connection,query,res ...

  2. mysql别人的框架_MySQL逻辑架构

    1.MySQL实现步骤 MySQL实现中分为三个步骤,1).客户端.2).server端.3).引擎端. 2.server端 server端分为连接器.查询缓存.分析器.优化器.执行器. 3.引擎端 ...

  3. mysql 关联删除_mysql 关联删除

    参考网址:http://www.111cn.net/database/mysql/51146.htm 原网页广告太多,自己抄了下. 1.delete from t1 where 条件 2.delete ...

  4. mysql 逻辑处理_mysql 逻辑查询处理流程

    我们知道在SQL语句中,第一个被处理的子句是FROM,而不是第一出现的SELECT.这就是SQL不同于其他编程语言的最明显特征之一,以下先看一下SQL查询处理的步骤序号: SQL 查询处理逻辑 1 ( ...

  5. 表名含有后缀 mysql 怎么删除_mysql批量删除指定前缀或后缀表

    今天突然发现我们数据库中多出很多表,后缀名为"copy",预计是navicat直接拷贝导致的,然后要对这些有同样后缀名的表进行删除,假设一个一个选择会非常麻烦,表计较多,在网上找了 ...

  6. mysql取消主键_mysql如何删除主键?

    当一个表中设置了主键之后,如果想要删除主键了要怎么做?下面本篇文章就给大家介绍MySQL删除主键的方法,希望对你们有所帮助. 首先我们来看看删除主键的语法:ALTER TABLE TABLE_NAME ...

  7. mysql获取逻辑日志_Mysql 逻辑架构图及日志系统

    1.Mysql逻辑架构图 场景一:一条SQL语句如何执行? 如图显示一条SQL语句的执行过程: 执行器的执行流程: 2.Mysql日志系统 说到日志系统,需要了解几个概念:creash-safe.re ...

  8. mysql存储过程删除_MySQL 存储过程删除大表

    1.权限问题 alter routine 编辑或删除存储过程 create routine 建立存储过程 execute 创建存储过程 2.存储过程相关的一些命令 show procedure sta ...

  9. mysql触发器联立删除_mysql触发器删除实例1

    mysql>create table t1 (a1 int);mysql>create table t2 (a2 int , b2 char(5));其中t2.a2和t1.a1是对应的,a ...

最新文章

  1. 视频|深度相机与应用
  2. Android模拟器环境下SD卡内容的管理[转]
  3. 2015年蓝桥杯省赛第5题--九数组分数
  4. css选择器的优先级
  5. Linux按照时间顺序列出文件
  6. MDC日志logback整合使用
  7. 华为全球第一、荣耀中国前二!余承东宣布新目标:苹果三星怎么看?
  8. 数据结构 2-3-2 线性表的双链表实现
  9. 数据结构与算法(Python)第三天
  10. 使用react-native做一个简单的应用-01项目介绍
  11. Atitit 网络爬虫与数据采集器的原理与实践attilax著 v2
  12. win10照片背景黑色改为白色
  13. ubuntu 安装python mysqldb
  14. 图片生成二维码最好的工具
  15. 微信小程序 收起键盘 wx.hideKeyboard()
  16. win2d 画出好看的图形
  17. 国内IDC数据中心星级评判标准怎么划分
  18. android 验证邮箱格式,android开发中, 如何验证邮箱的格式 ?
  19. 云服务器部署ssl证书
  20. faker php测试数据库生成

热门文章

  1. Apache Kylin从入门到精通
  2. 企业拥抱开源之前,必须了解的七件事
  3. 饿了么4年+阿里2年:研发路上的一些总结与思考
  4. 联手友盟+打造云上数据增长“样板间”, 好兔视频成功逆势突围
  5. 如何在CDN边缘节点执行你的JavaScript?
  6. 如何从零开始用Keras开发一个机器翻译系统
  7. 2017双11技术揭秘—阿里数据库进入全网秒级实时监控时代
  8. OpenStack管理界面开源啦!
  9. 一文告诉你雾计算与云计算的区别及对物联网的价值!
  10. 如何让 Mac在运行 Windows时享受极致体验?Parallels Desktop 16给你答案!