首页 > 其他分享 >mybatisplus根据两个字段进行更新或新增

mybatisplus根据两个字段进行更新或新增

时间:2023-10-13 10:11:50浏览次数:32  
标签:mybatisplus name collect 新增 更新 item deptcodeKyz private String

注意:使用@Builder注解时,要加上无参构造器,否则无法更新

 

@Override
@Transactional
public void saveManufacturerInfo(List<Manufacturer> manufacturerList) {

List<ManufacturerMap> codeNameMapping = manufacturerList.stream().map(item -> ManufacturerMap
.builder()
.deptcodeKyz(item.getDeptcodeKyz())
.name(item.getName())
.build()
).collect(Collectors.toList());

if (CollectionUtils.isEmpty(codeNameMapping)) {
return;
}

Map<String, Manufacturer> manufacturerMapping = this.baseMapper.listByCodeAndNameMap(codeNameMapping)
.stream().collect(Collectors.toMap(item -> item.getDeptcodeKyz() + item.getName(), Manufacturer -> Manufacturer));

List<Manufacturer> collect = codeNameMapping.stream().map(item -> {
String deptcodeKyz = item.getDeptcodeKyz();
String name = item.getName();
Manufacturer dbObj = manufacturerMapping.get(deptcodeKyz + name);
Date date = new Date();
if (Objects.isNull(dbObj)) {
return Manufacturer.builder()
.deptcodeKyz(deptcodeKyz)
.name(name)
.createTime(date)
.updateTime(date)
.build();
} else {
dbObj.setUpdateTime(date);
return dbObj;
}
}).collect(Collectors.toList());

this.saveOrUpdateBatch(collect, collect.size());
}


<select id="listByCodeAndNameMap" resultType="com.cars.ict.core.device.entity.Manufacturer">
SELECT
<include refid="Base_Column_List"/>
FROM manufacturer
WHERE( DEPTCODE_KYZ, name ) IN
<foreach collection="list" item="item" separator="," open="(" close=")">
( #{item.deptcodeKyz}, #{item.name} )
</foreach>

</select>


@TableName(value ="manufacturer")
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Manufacturer implements Serializable {

/**
* 主键
*/
@TableId(type = IdType.UUID)
private String id;

/**
* 车站唯一编码
*/
private String deptcodeKyz;

/**
* 设备厂商
*/
private String name;

/**
* 创建时间
*/
@TableField(fill = FieldFill.INSERT)
private Date createTime;

/**
* 修改时间
*/
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

@TableField(exist = false)
private static final long serialVersionUID = 1L;
}



标签:mybatisplus,name,collect,新增,更新,item,deptcodeKyz,private,String
From: https://www.cnblogs.com/sensenh/p/17761284.html

相关文章

  • xcode15在appstore上显示的更新日志-机翻
    swiftmacrosupportbringsinlineexpansionsandbreakpointdebugginginthesourceeditorGitstaginghelpscraftyournextcommitwithoutleavingyourcodeStringcatalogsstreamlinelocalizationwithasingleplacetoviewandeditstringsBookmarkshe......
  • 2024版Lightroom Classic13.0版本免激活版更新及资源
    2023年10月10日,Adobe又更新了LightroomClassic,当前最新的版本为13.0版本,本次更新最重磅的功能是使用人工智能AI来处理以前需要昂贵的镜头才能出来的模糊效果。LightroomClassic13.0版本使用了人工智能驱动的镜头模糊模糊背景或前景,轻松增加图像的深度。无需投资昂贵的镜头即可实......
  • Spring Boot 2.6.0 发布,一大波新特性,禁止了循环依赖,还有哪些更新
    1、默认禁止了循环依赖循环依赖大家都知道,也被折磨过,这下2.6.0的版本默认禁止了循环依赖,如果程序中出现循环依赖就会报错。当然并没有一锤子打死,也提供了开启允许循环依赖的配置,只需要在配置文件中开启即可:spring:main:allow-circular-references:true2、支持自定义脱敏规......
  • 【日常收支账本】【Day05】编辑账本界面增加删除、更新记录功能——提高代码复用性
    一、项目地址https://github.com/LinFeng-BingYi/DailyAccountBook二、新增1.增加删除记录功能1.1功能详述点击删除按钮后,获取对应行的数据组成字典,用字典的键值对匹配到对应日期的记录元素;接着用该字典数据冲正存款账户余额(实现思路为新增记录时的反向操作),同时删除记录......
  • Firefly Image 2 Model 新增​功能
    FireflyImage2Model(Beta)现​已​可用通过​更高​质量​的​图像​和​插图​生成,​以及​自​定义​选项​和​改进​的​动态​范围,​更​快​地​实现​您​的​创意​愿景。立即​尝试FireflyImage2(Beta)轻松​尝试​不同​的​样式通过​将​现有​图......
  • JDK8之后新增的时间-Instant
     ......
  • JDK8之后新增的时间-LocalDate、LocalTime、LocalDateTime、ZoneId、ZoneDateTime
    LocalDate:代表本地日期(年、月、日、星期)LocalTime:代表本地时间(时、分、秒、纳秒)LocalDateTime:代表本地日期、时间(年、月、日、星期、时、分、秒、纳秒)(其三者都可以调用now()方法,且其对象内容不一样)LocalDate:  (获取的本地对象是一个不可变对象) (注意:修改之后是创建了......
  • ChatGPT大更新-视觉(vision)
    最近ChatGPT除了语音外,vision(视力)也有上线。国外网友的几个例子。看起来能力还是很强的。除了拍照,画图,草稿都可以识别。这么下去,最适合的ChatGPT应用,可能是机器人了。 ......
  • pymongo中针对指定集合更新validator规则
    问题描述:针对mongo中已创建的集合,更新validator验证器规则解决方法在确保pymongo中所使用的用户对目标数据库具有dbAdmin之类的管理权限的前提下(若无权限,可在mongo中执行db.grantRolesToUser("目标用户名",[{role:"dbAdmin",db:"目标数据库名"}])进行权限添......
  • jquery uploadify动态更新配置参数方法uploadifySettings()
    1.使用scriptData给后台传参数的时候,必须声明'method':'GET',因为默认是POST2.$("#uploadify").uploadifySettings('scriptData',{'name':'liudong','age':22});动态更新配置参数$("#uploadify&quo......