首页 > 编程语言 >java 差异删除 差异更新与删除

java 差异删除 差异更新与删除

时间:2024-03-21 09:57:39浏览次数:40  
标签:java stream 删除 差异 oldList getId entity item return

public boolean relation(Long projectId, List<BsMemberEntity> members) {
		//1)、获取原关联数据
		List<ProProjectAuthorEntity> oldList = this.findByProjectId(projectId);
		List<Long> oldMemberIds = oldList.stream().map(item -> {
			return item.getMemberId();
		}).collect(Collectors.toList());

		if (CollectionUtil.isNotEmpty(members)) {
			List<ProProjectAuthorEntity> newList = members.stream().map(item -> {
				ProProjectAuthorEntity entity;
				//是否是原有存在的人员
				if (CollectionUtil.contains(oldMemberIds, item.getId())) {
					entity = oldList.stream().filter(el -> el.getMemberId().equals(item.getId())).findFirst().get();
				} else {
					entity = new ProProjectAuthorEntity();
					entity.setProjectId(projectId);
					entity.setMemberId(item.getId());
					entity.setUserId(item.getUserId());
				}
				entity.setPower(item.getDescription());//此处使用人员描述字段代传

				return entity;
			}).collect(Collectors.toList());

			//1)、保存数据
			this.saveOrUpdateBatch(newList);

			//2)、去除差异数据
			Collection<Long> subtract = CollectionUtil.subtract(oldList, newList).stream().map(item -> {
				return item.getId();
			}).collect(Collectors.toList());
			this.removeBatchByIds(subtract);
		}else{
			this.removeBatchByIds(oldList);
		}
		return true;
	}

标签:java,stream,删除,差异,oldList,getId,entity,item,return
From: https://www.cnblogs.com/linhan8888/p/18086671

相关文章

  • 基于Java的桃花峪滑雪场租赁系统(Vue.js+SpringBoot)
    目录一、摘要1.1项目介绍1.2项目录屏二、功能模块2.1游客服务2.2雪场管理三、数据库设计3.1教练表3.2教练聘请表3.3押金规则表3.4器材表3.5滑雪场表3.7售票表3.8器材损坏表四、系统展示五、核心代码5.1查询教练5.2教练聘请5.3查询滑雪场5.4滑雪场预......
  • 基于Java+Springboot技术仓库管理系统的实现+项目全套源码+完整文档源码说明+毕业论文
    摘 要现如今,许多企业存在的问题:信息化不足,计算机使用率不高,大量的日常工作皆是手工处理,因此工作效率低,企业内部沟通不良等等问题很难克服。要提升企业竞争力,企业内部信息化是不可缺少的一个步骤。所以要实施先进的自动化系统,实现企业内部信息管理、共享及交流,才能让企业在......
  • 【JAVA------基础篇】
    java基础1.JDKJDK:javadevelopmentkitJRE:javaruntimeenvironmentJDK包含JREjava跨平台:因为java程序运行依赖虚拟机,虚拟机需要有对应操作系统的版本,而jre中有虚拟机。当你想要在Linux系统下运行,则需要安装对应的虚拟机,及对应的jdk版本,而对应的jdk版本中的jre有对......
  • JAVA------基础篇
    java基础1.JDKJDK:javadevelopmentkitJRE:javaruntimeenvironmentJDK包含JREjava跨平台:因为java程序运行依赖虚拟机,虚拟机需要有对应操作系统的版本,而jre中有虚拟机。当你想要在Linux系统下运行,则需要安装对应的虚拟机,及对应的jdk版本,而对应的jdk版本中的jre有对......
  • Java并发编程:第四章 线程池(Executor框架)
    文章目录一、为什么需要线程池1、线程的创建2、线程销毁二、优点1、降低资源消耗2、提高响速度3、线程管理三、架构说明四、Executors工具类1、介绍2、Executors工具类常用的方法(1)newFixedThreadPool(intnThreads):(2)newCachedThreadPool()(3)newSingleThreadExecutor()......
  • Java-Java基础学习(3)-多线程(1)
    Java-Java基础学习(4)-多线程(1)3.多线程在Java中,多线程主要的实现方式有四种:继承Thread类、实现Runnable接口、实现Callable接口经过FutureTask包装器来建立Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。3.1.四种创建方式Threadclass==>......
  • Java为什么是值传递?
    Java为什么是值传递?在我们调用方法的时候,通常会传递参数,那我们到底传递的是对象本身,还是仅仅是对象的拷贝对象呢?先搞懂两个概念,形参和实参形参和实参实参(实际参数,Arguments):用于传递给函数/方法的参数,必须有确定的值。形参(形式参数,Parameters):用于定义函数/方法,接收实参,不......
  • java学习系列(四):面向对象
    一、面向过程和面向对象1、程序设计的思路●面向对象(具体的步骤)是软件开发中的一类编程风格、开发范式。●除了面向对象,还有面向过程、指令式编程和函数式编程。在所有的编程范式中,我们接触最多的还是面向过程和面向对象两种。●早期先有面向过程思想,随着软件规模的......
  • Kotlin,简直是 Java 的 Pro Max!(笔记3 进阶篇)
    目录拓展拓展函数拓展属性运算符重载operator高阶函数通过高阶函数,模拟实现标准函数apply内联函数inlinenoinlinecrossinline泛型泛型类泛型方法限定泛型类型模拟实现apply标准函数(泛型版)泛型高级特性回顾Java中的协变和逆变Kotlin的协变和逆变委托......
  • 9.JavaWeb& javaScript基础
    目录导语:一、JavaWeb概述二、JavaScript基础概念:功能:1.基本语法(1)与html结合方式(2)注释(3)数据类型(4)变量(5)运算符(6)流程控制语句:(7)JS特殊语法:案例:99乘法表2.基本对象(1)Function:函数(方法)对象(2)Array:数组对象(3)Boolean(4)Date:日期对象(5)Math:数学对象(6)Number(7)String(8......