业务需求:编辑时,对主表中数据的修改,以及子数据可以进行删除,修改,或者新增的操作
前端(主要展示子表):可以点击新增,也可以在原数据上进行编辑,也可以删除该条数据再新增

前端传值(主要展示子表):

higtRule里面就是子数据,没有id的则是点击新增后新增的数据,所以既有新增操作,又有编辑操作
后台处理(主要对子数据):
思路:
1:首先查询全部子数据
2:创建一个空集合newIds,用于存放未删除的子数据的id,遍历前端传递过来的子数据,将子数据的id存放在newIds集合中
3:过滤数据也就是用全部的数据去过滤newIds的数据,如果全部的数据中的数据和newIds中的数据不一致,则就是要删除的子数据,使用Java8的stream流处理,该方法返回的就是要删除的数据的集合
4:创建一个空集合deleteIds,用于存放要删除的子数据的id,遍历deleteList,将id存放在deleteIds中
最后执行删除操作

controller:

/***  面积户表-收费标准-编辑** @param artbFeeStandardVo* @return*/@AutoLog(value = "artb_fee_standard-编辑")@ApiOperation(value="artb_fee_standard-编辑", notes="artb_fee_standard-编辑")@PutMapping(value = "/edit")public Result<?> edit(@RequestBody ArtbStandardVo artbFeeStandardVo) {return artbFeeStandardService.editArtbFeeStandard(artbFeeStandardVo);}

service层

    Result<?> editArtbFeeStandard(ArtbStandardVo artbFeeStandardVo);

实现类(主要是对子数据的处理):

    @Override@Transactionalpublic Result<?> editArtbFeeStandard(ArtbStandardVo artbFeeStandardVo) {// 更新子数据// 查询全部超高规则QueryWrapper<ArtbFeeHighRule> oldChildWrapper = new QueryWrapper<>();oldChildWrapper.eq("standard_id", feeStandard.getId());List<ArtbFeeHighRule> highRules = highRuleMapper.selectList(oldChildWrapper);// 存储前端传递过来未删除的idList<String> newIds = new ArrayList<>();for (ArtbFeeHighRule rule : artbFeeStandardVo.getHighRuleList()) {newIds.add(rule.getId());}// 筛选出要删除的超高数据,进行批量删除List<ArtbFeeHighRule> deleteList = highRules.stream().filter(item -> !newIds.contains(item.getId())).collect(Collectors.toList());// 存放要删除的idList<String> deleteIds = new ArrayList<>();for (ArtbFeeHighRule rule : deleteList) {deleteIds.add(rule.getId());}if (deleteIds.size() > 0) {highRuleMapper.deleteBatchById(deleteIds);}if (!CollectionUtils.isEmpty(artbFeeStandardVo.getHighRuleList())) {List<ArtbFeeHighRule> highList = new ArrayList<>();List<ArtbFeeHighRuleHistory> highHistoryList = new ArrayList<>();artbFeeStandardVo.getHighRuleList().forEach(item -> {item.setInsertBaseColumnNoCompanyCode();if (StringUtils.isEmpty(item.getId())) {// 说明是新增item.setId(IdUtil.getCombineId(feeStandard.getId()));item.setStandardId(feeStandard.getId());item.setCompanyCode(feeStandard.getCompanyCode());}highList.add(item);// 更新超高历史表//操作轨迹ArtbFeeHighRuleHistory highRuleHistory = new ArtbFeeHighRuleHistory();BeanUtils.copyProperties(item, highRuleHistory);highRuleHistory.setStandardId(feeStandardHistory.getId());highRuleHistory.setCompanyCode(feeStandardHistory.getCompanyCode());highRuleHistory.setInsertBaseColumnNoCompanyCode();highRuleHistory.setId(IdUtil.getCombineId(highRuleHistory.getCompanyCode()));highHistoryList.add(highRuleHistory);});// 超过规则做批量新增或者编辑highService.saveOrUpdateBatch(highList);// 超过规则历史表做新增操作,记录具体操作数据highHistoryService.saveBatch(highHistoryList);}}

mapper中的删除

 /*** 批量删除超高数据* @param deleteIds* @return*/int deleteBatchById(List<String> deleteIds);

xml中

 <!--批量删除超高数据--><delete id="deleteBatchById" parameterType="java.util.List">delete from artb_fee_high_rulewhere id IN<foreach collection="list" item="item" open="(" separator="," close=")">#{item}</foreach></delete>

最后返回成功,或者失败:

 if (update > 0) {return Result.OK("修改成功");} else {return Result.error("修改失败");}

描述有误的地方欢迎大家指正,大家有问题可加qq 876942434。一起进步~

mybatisPlus中 批量删除相关推荐

  1. oracle删除表中数据_工作表中提供的特定数据在数据库中批量删除的方法

    大家好,我们今日继续讲解VBA数据库解决方案的第25讲内容:利用VBA,把工作表中提供的数据在数据表中批量删除的方法.在上一讲中,我们讲了实现在数据表中删除记录的一般方法,这种方法可以对重复的数据进行 ...

  2. 群晖自动删除重复文件_在群晖中批量删除重复文件(零基础手把手图文)

    在群晖中批量删除重复文件(零基础手把手图文) 2020-03-26 14:51:01 24点赞 229收藏 39评论 小编注:此篇文章来自即可瓜分10万金币,周边好礼达标就有,邀新任务奖励无上限,点击 ...

  3. excel中批量删除公式,保留数值

    excel中批量删除公式,保留数值 Sub macro1()Dim sh As WorksheetFor Each sh In Sheetssh.UsedRange = sh.UsedRange.Va ...

  4. linux 下删除批量文件命令,linux系统中批量删除文件与空文件删除的命令

    linux命令在系统中有两种类型:内置Shell命令和Linux命令.接下来是小编为大家收集的linux系统中批量删除文件与空文件删除的命令,希望能帮到大家. linux系统中批量删除文件与空文件删除 ...

  5. (WPS)Excel表格中批量删除指定字符

    (WPS)Excel表格中批量删除指定字符 打开excel表格,选中需要删除的指定行或列的数据,键盘选择快捷键ctrl+H, ![比如要删除的字符是 ' ' 鼠标点击"全部替换", ...

  6. php redis删除所有key,redis中批量删除key的方法

    Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...

  7. 在ArcGIS中批量删除属性表字段

    在ArcGIS中,当我们在删除属性表字段时,如果在属性表内直接右键点击删除,一次只能删除一个字段(如图一). 这样的话效率非常低,本文介绍一个批量删除属性表字段的方法,那就是ArcToolbox中的[ ...

  8. Docker中批量删除 tag为none的镜像

    场景:        有时候重新构建镜像的时候,该镜像正在被某容器使用中,那么在重新构建同名同版本镜像后,docker保留原来的镜像,即容器还是用原来的,除非重启.         那么原来的镜像名称 ...

  9. 解决WORD中批量删除空白行的问题

    批量删除word中空白行的解决方法:"查找和替换"--查找内容为:^p^p--替换为:^p.即可.

最新文章

  1. 中国年度AI省市格局:北广上稳居前三,江苏四川力压浙江,山西转型“挖数据”增速迅猛...
  2. tengine简单安装_实操丨如何在EAIDK上部署Tengine开发AI应用之物体检测应用入门(C++)...
  3. Rocksdb的优劣及应用场景分析
  4. 常用技巧 —— 离散化
  5. AptitudeSystem 2.0
  6. jdk版本修改不生效
  7. tensorflow随笔——LeNet网络
  8. 我也不知道取什么标题好了!
  9. mysql 主从同步机制
  10. Android之AIDL跨进程通讯
  11. 用WAIK for Win7制作Winpe3.0
  12. 卸载软件时,出现解压缩支持文件时出错,灾难性故障--转载
  13. 泛型中的 T、E、K、V,还记得嘛?
  14. 上位机与下位机交互--让socket不死
  15. Discuz验证码功能解析
  16. AGV的关键技术与细节
  17. C语言程序设计---读书笔记汇总(整理中)
  18. C++ Builder ADO数据库连接与保存
  19. HTML各种命令的代码
  20. JAVA练习114-猫和老鼠

热门文章

  1. Linux查询日志宝典
  2. 口语机器翻译(ST)相关算法、论文、数据集、代码库等资源分享
  3. “抛砖引玉”晒Jncip-sp证书寻Jncie-sp战友
  4. 倩女幽魂2稳定的服务器,《倩女幽魂2》服务器帮会形势分析之点将台篇
  5. wex5开发外卖app笔记
  6. 河南师范大学python+学习笔记2 python语言基本语法元素
  7. 故地重游,今天陪母亲找到了她在1975年知青下乡的住所。
  8. java camel,java – 返回基础知识:Apache Camel路由和直接组件
  9. 初创企业如何选购企业邮箱?
  10. sql查询之 max使用