一个“保存”按钮同时存在“增删改”三种操作,该如何去实现?

简介: 一般情况下,对表格中的数据进行“增删改”操作,都是直接操作数据库。现在有些项目因为设计或者优化的缘故,不对表格中的数据进行“增删改”,而是通过最后“保存”按钮的操作,一次性将数据传至服务器,由服务器对数据进行“增删改”。 以下通过给用户分配角色这样的功能进行说明。

一般情况下,对表格中的数据进行“增删改”操作,都是直接操作数据库。现在有些项目因为设计或者优化的缘故,不对表格中的数据进行“增删改”,而是通过最后“保存”按钮的操作,一次性将数据传至服务器,由服务器对数据进行“增删改”。

以下通过给用户分配角色这样的功能进行说明。

操作界面大致如下(直接手画,略显粗糙,能看明白就行):

序号 用户 角色
1 用户A 角色A
2 用户A 角色B
3 用户A 角色C
删除 新增 保存

说明:

  • “新增”、“修改”和“删除”都不是直接操作数据库。
  • 点击“保存”时才将数据传给服务器。
  • 此项目中的删除均为逻辑删除(即,只是对数据打上“删除”状态的标记),不是物理删除。
  • 文中说的“ID”为用户角色的主键。

第一种方法:先删后增

  • 直接删除用户下的所有角色,将前端传过来的数据统一新增。
优缺点:
  • 优点:逻辑简单,容易实现。
  • 缺点:会产生大量的删除数据。

第二种方法:通过有无 ID 进行操作判断

  1. 过滤数据:通过 stream 过滤出无 ID 的数据和有 ID 的数据。
  2. 新增:无 ID 的数据均为新增的数据,在服务器中直接对这些数据进行新增操作即可。
  3. 修改和删除:查询出用户所有的角色,将查询出来的ID(ID_A)与前端传过来的有ID的数据(ID_B)进行比对,交集(即 ID_A 与 ID_B都有的数据)即为修改,差集(即 ID_A 有的数据,在 ID_B 中没有)即为删除。
优缺点:
  • 优点:影响的数据量较少
  • 缺点:实现起来比较复杂

第三种方法:前端部分分类

  1. 前端分类:前端将被逻辑删除的数据保存在 delete 对象中。
  2. 数据上传:将表格中的数据(包含有新增的数据和修改的数据)和 delete 对象中的数据一起上传至服务器。
  3. 后端分类:将表格中的数据分为有 ID 的数据和无 ID 的数据。
  4. 增删改操作:无 ID 的数据进行新增,有 ID 的数据进行修改,delete 对象中的数据进行删除。
优缺点:
  • 优点:影响的数据量较少,前端的分类操作比较容易,后端的分类操作和增删改操作也比较容易。
  • 缺点:后端仍需要进行分类操作。

第四种方法:前端全分类

  1. 前端分类:前端将需要进行新增、修改和删除的数据分别放到 add 对象、update 对象 和 delete 对象中。
  2. 数据上传:将分类之后的数据上传至服务器。
  3. 后端增删改操作:对 add 对象中的数据进行新增,对 update 对象中的数据进行修改,对 delete 对象中的数据进行删除。
优缺点:
  • 优点:影响的数据量较少,后端容易实现。
  • 缺点:前端实现较难。
相关文章
|
15天前
table最后一页所有数据批量删除或者单个删除,怎么自动回到上一页
table最后一页所有数据批量删除或者单个删除,怎么自动回到上一页
|
6月前
|
消息中间件 架构师 数据处理
处理数据时点按钮,数据完数据时会自动执行的问题
处理数据时点按钮,数据完数据时会自动执行的问题
|
8月前
MyBaits保存更新删除
MyBaits保存更新删除
27 0
|
9月前
element ui 上传图片之后跳转、刷新、保存,预览和删除丢失问题
这问题困惑了我好久,在官方的element ui 的组件库中,直接拿来使用的话,只有当前显示效果,一旦刷新页面或者保存之后,就会丢失,预览和删除功能。当保存后,保存到后端接口,再次查看,图片是能渲染出来,但是由于保存页面刷新,随之整个上传过程失败,而查看所拿到的图片只是一张静态图片,要想再次预览和查看,需要重新选中上传
136 0
|
关系型数据库 MySQL 数据库
MySQL数据库:创建一个表,并执行插入、修改和删除数据操作
MySQL数据库:创建一个表,并执行插入、修改和删除数据操作
216 0
MySQL数据库:创建一个表,并执行插入、修改和删除数据操作
调用存储过程进行图片的插入或修改
调用存储过程进行图片的插入或修改
|
JavaScript 前端开发 Java
为删除数据操作与退出操作添加确认提示框
JS实现为删除数据操作与退出操作添加确认提示框
为删除数据操作与退出操作添加确认提示框
基类、接口的应用——表单控件:一次添加、修改一条记录,一次修改多条记录。(上)
好久没发帖子了,又加了不少的功能呀。(图片仅是测试,不代表什么表情。) 本来我也想写一个2007的总结的,但是看到很多人都写了,我就不凑热闹了,写点和代码有关系的吧。 写作原因: 1、在项目里做得最多的操作恐怕就是保存数据了,总是要写一大堆的代码,能不能简单一点呢?2005来了,似乎可以减少一些代码,但是03里怎么办呢? 2、基类、接口、策略模式,好多高手都讨论过了,但是都是理论上的,在实践中如何应用呢?在webform 里面又怎么使用呢? 目的: 1、做一个“控件”来应对各种表单的录入,包括一次保存一条记录、一次保存多条记录。
987 0
|
SQL 数据库
阻止保存要求重新创建表的修改
我的电脑数据库版本是  Microsoft SQL Server 2008 R2 (RTM) - 10.50.1600.1 (Intel X86)    在用数据库表设计器设计表结构时出现如上错误  阻止保存要求重新创建表的修改 解决方法: 在菜单栏的工具选项中的设计器选项卡中 取消 阻...
696 0