mybatisPlus中批量刪除的示例代碼
業(yè)務(wù)需求:編輯時(shí),對(duì)主表中數(shù)據(jù)的修改,以及子數(shù)據(jù)可以進(jìn)行刪除,修改,或者新增的操作
前端(主要展示子表):可以點(diǎn)擊新增,也可以在原數(shù)據(jù)上進(jìn)行編輯,也可以刪除該條數(shù)據(jù)再新增

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

higtRule里面就是子數(shù)據(jù),沒(méi)有id的則是點(diǎn)擊新增后新增的數(shù)據(jù),所以既有新增操作,又有編輯操作
后臺(tái)處理(主要對(duì)子數(shù)據(jù)):
思路:
1:首先查詢?nèi)孔訑?shù)據(jù)
2:創(chuàng)建一個(gè)空集合newIds,用于存放未刪除的子數(shù)據(jù)的id,遍歷前端傳遞過(guò)來(lái)的子數(shù)據(jù),將子數(shù)據(jù)的id存放在newIds集合中
3:過(guò)濾數(shù)據(jù)也就是用全部的數(shù)據(jù)去過(guò)濾newIds的數(shù)據(jù),如果全部的數(shù)據(jù)中的數(shù)據(jù)和newIds中的數(shù)據(jù)不一致,則就是要?jiǎng)h除的子數(shù)據(jù),使用Java8的stream流處理,該方法返回的就是要?jiǎng)h除的數(shù)據(jù)的集合
4:創(chuàng)建一個(gè)空集合deleteIds,用于存放要?jiǎng)h除的子數(shù)據(jù)的id,遍歷deleteList,將id存放在deleteIds中
最后執(zhí)行刪除操作
controller:
/**
* 面積戶表-收費(fèi)標(biāo)準(zhǔn)-編輯
*
* @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);
實(shí)現(xiàn)類(lèi)(主要是對(duì)子數(shù)據(jù)的處理):
@Override
@Transactional
public Result<?> editArtbFeeStandard(ArtbStandardVo artbFeeStandardVo) {
// 更新子數(shù)據(jù)
// 查詢?nèi)砍咭?guī)則
QueryWrapper<ArtbFeeHighRule> oldChildWrapper = new QueryWrapper<>();
oldChildWrapper.eq("standard_id", feeStandard.getId());
List<ArtbFeeHighRule> highRules = highRuleMapper.selectList(oldChildWrapper);
// 存儲(chǔ)前端傳遞過(guò)來(lái)未刪除的id
List<String> newIds = new ArrayList<>();
for (ArtbFeeHighRule rule : artbFeeStandardVo.getHighRuleList()) {
newIds.add(rule.getId());
}
// 篩選出要?jiǎng)h除的超高數(shù)據(jù),進(jìn)行批量刪除
List<ArtbFeeHighRule> deleteList = highRules.stream().filter(item -> !newIds.contains(item.getId())).collect(Collectors.toList());
// 存放要?jiǎng)h除的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())) {
// 說(shuō)明是新增
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);
});
// 超過(guò)規(guī)則做批量新增或者編輯
highService.saveOrUpdateBatch(highList);
// 超過(guò)規(guī)則歷史表做新增操作,記錄具體操作數(shù)據(jù)
highHistoryService.saveBatch(highHistoryList);
}
}mapper中的刪除
/** * 批量刪除超高數(shù)據(jù) * @param deleteIds * @return */ int deleteBatchById(List<String> deleteIds);
xml中
<!--批量刪除超高數(shù)據(jù)-->
<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>最后返回成功,或者失?。?/p>
if (update > 0) {
return Result.OK("修改成功");
} else {
return Result.error("修改失敗");
}到此這篇關(guān)于mybatisPlus中批量刪除的示例代碼的文章就介紹到這了,更多相關(guān)mybatisPlus 批量刪除內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)字符串大小寫(xiě)轉(zhuǎn)換的常用方法
在 Java 中,字符串大小寫(xiě)轉(zhuǎn)換是文本處理的核心操作之一,Java 提供了多種靈活的方式來(lái)實(shí)現(xiàn)大小寫(xiě)轉(zhuǎn)換,適用于不同場(chǎng)景和需求,本文將全面解析大小寫(xiě)轉(zhuǎn)換的各種方法,并提供實(shí)用代碼示例,需要的朋友可以參考下2025-12-12
spring啟動(dòng)后保證創(chuàng)建的對(duì)象不被垃圾回收器回收
最近看到一個(gè)問(wèn)題是,spring在啟動(dòng)后如何保證創(chuàng)建的對(duì)象不被垃圾回收器回收?。所以本文結(jié)合jvm的垃圾回收機(jī)制和spring中的源代碼做出自己的一點(diǎn)猜測(cè)。有需要的朋友們可以參考借鑒。2016-09-09
java使用Socket實(shí)現(xiàn)文件上傳功能
這篇文章主要為大家詳細(xì)介紹了java使用Socket實(shí)現(xiàn)文件上傳功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-02-02
使用springcloud+oauth2攜帶token去請(qǐng)求其他服務(wù)
這篇文章主要介紹了使用springcloud+oauth2攜帶token去請(qǐng)求其他服務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
解析SpringBoot整合SpringDataRedis的過(guò)程
這篇文章主要介紹了SpringBoot整合SpringDataRedis的過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-06-06
springboot的controller中如何獲取applicatim.yml的配置值
本文介紹了在SpringBoot的Controller中獲取application.yml配置值的四種方式,并舉例說(shuō)明了每種方式的使用場(chǎng)景和優(yōu)缺點(diǎn),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧2025-12-12
java讀取excel圖片導(dǎo)入代碼示例(親測(cè)有效)
在日常工作中,我們經(jīng)常要將一些照片插入到Excel表格中,這篇文章主要給大家介紹了關(guān)于java讀取excel圖片導(dǎo)入的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10

