mybatisPlus中 批量删除

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

前端传值(主要展示子表):
在这里插入图片描述
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
    @Transactional
    public Result<?> editArtbFeeStandard(ArtbStandardVo artbFeeStandardVo) {
           // 更新子数据
            // 查询全部超高规则
            QueryWrapper<ArtbFeeHighRule> oldChildWrapper = new QueryWrapper<>();
            oldChildWrapper.eq("standard_id", feeStandard.getId());
            List<ArtbFeeHighRule> highRules = highRuleMapper.selectList(oldChildWrapper);
            // 存储前端传递过来未删除的id
            List<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());
            // 存放要删除的id
            List<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_rule
        where 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。一起进步~

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值