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

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

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

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

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

序号 用户 角色
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 对象中的数据进行删除。
优缺点:
  • 优点:影响的数据量较少,后端容易实现。
  • 缺点:前端实现较难。
相关文章
|
前端开发 程序员 Android开发
盘点那些好玩有趣的 VSCODE 插件
“工欲善其事,必先利其器!” vscode 作为前端开发的重要工具,其插件能大幅提升战斗力,精心收集12+插件,总有几款你还未曾拥有。
2102 0
VSCode 如何设置背景图片
VSCode 如何设置背景图片
3976 1
|
IDE 网络协议 安全
阿里Java编程规约【九】 注释规约
1.【强制】类、类属性、类方法的注释必须使用 Javadoc 规范,使用 /** 内容 */ 格式,不得使用 // xxx 方式。 说明:在 IDE 编辑窗口中,Javadoc 方式会提示相关注释,生成 Javadoc 可以正确输出相应注释;在 IDE 中,工程调用方法时,不进入方法即可悬浮提示方法、参数、返回值的意义,提高阅读效率。
2353 0
|
安全 Serverless API
MCP Server 之旅第 5 站:服务鉴权体系解密
本文深入探讨了MCP协议在授权机制上的演进与函数计算对MCP场景下Auth的支持。文章从MCP协议的授权发展入手,分析了2024-11-05无授权支持到2025-03-26基于OAuth 2.1的授权机制,再到最新Draft中引入Protected Resource Metadata(RFC9728)的变化。同时,详细介绍了函数计算如何通过Bearer认证方式解决MCP场景下的授权问题,帮助开发者降低开发成本并提升安全性。
|
开发框架 中间件 Java
如何处理跨域资源共享(CORS)的 OPTIONS 请求?
处理 CORS 的 OPTIONS 请求的关键是正确设置响应头,以告知浏览器是否允许跨域请求以及允许的具体条件。根据所使用的服务器端技术和框架,可以选择相应的方法来实现对 OPTIONS 请求的处理,从而确保跨域资源共享的正常进行。
949 61
|
8月前
|
人工智能 自然语言处理 搜索推荐
教育行业Agent案例全解析:覆盖K12、高教、职教的落地实践与标杆范本
Salesforce调研显示,77%学生愿用AIAgent解决校园事务,83%管理者期待减负。本文基于真实案例,系统梳理K12、高校、职教三大场景中智能体在教学、管理、服务中的创新应用,揭示AI如何重塑教育未来。
1624 4
|
JSON 数据格式 开发者
SpringMVC--获取请求参数
在SpringMVC中,获取请求参数有多种方法,分别适用于不同的场景。通过使用 `@RequestParam`、`@PathVariable`、`@RequestBody`、`HttpServletRequest`和 `@ModelAttribute`等注解和对象,可以方便地从请求中提取所需的数据。了解和掌握这些方法,有助于编写高效且健壮的Web应用程序。
433 6
|
SQL 缓存 安全
深入理解后端开发中的API设计原则
【9月更文挑战第32天】在数字化浪潮中,API(应用程序编程接口)作为连接不同软件组件的桥梁,其设计质量直接影响着后端系统的效能与扩展性。本文将通过浅显易懂的方式,探讨如何构建高效、安全且易于维护的API,同时提供实用的代码示例,帮助读者在后端开发实践中提升API设计的水平。
411 3
|
NoSQL Java Redis
Redis 从入门到精通之Redis Pipeline
使用Redis Pipeline可以大大提高Redis的性能和吞吐量,但需要注意命令的顺序和语义,以保证数据的正确性和一致性。同时,使用Jedis和RedisTemplate实现Redis Pipeline时,需要遵循最佳实践,避免出现错误和异常。 2. 在使用Jedis实现Redis Pipeline时,需要使用Pipeline对象添加多个命令并执行,然后通过`syncAndReturnAll`方法获取所有命令的执行结果。 3. 在使用RedisTemplate实现Redis Pipeline时,需要使用`executePipelined`方法添加多个命令并执行,然后通过返回的结果列表获取
1239 117
Redis 从入门到精通之Redis Pipeline
|
Java C++ Spring
@Async注解的方法有哪些限制?
@Async注解的方法使用限制
435 2