解析 if (contOptPerMsgEntityList != null && contOptPerMsgEntityList.size() > 0) { contOptPerMsgEntityList = contOptPerMsgEntityList.stream() .map(perMsg -> { perMsg.setGroupType(groupType); perMsg.setPersonType(personType); perMsg.setWelfareNo(welfareNo); return perMsg; } ).filter(perMsg -> { String attrName = perMsg.getAttrName(); String attrDes = perMsg.getAttrDes(); String attrDescEn = perMsg.getAttrDescEn(); if ("null1".equals(attrName) || "null2".equals(attrName) || "null3".equals(attrName) || "null4".equals(attrName) || "null5".equals(attrName)) { return StringUtils.isBlank(attrDes) && StringUtils.isBlank(attrDescEn); } return true; } ).collect(Collectors.toList()); contOptPerMsgService.remove( new LambdaQueryWrapper<ContOptPerMsgEntity>() .eq(ContOptPerMsgEntity::getWelfareNo, welfareNo) .eq(ContOptPerMsgEntity::getGroupType, groupType) .eq(ContOptPerMsgEntity::getPersonType, personType) ); contOptPerMsgService.saveBatch(contOptPerMsgEntityList); }并解析每一个方法的用法和优化具体代码
时间: 2023-11-22 19:53:18 浏览: 58
源码解析JDK 1.8 中的 Map.merge()
这段代码的作用是对一个列表进行处理,具体步骤如下:
1. 判断列表是否为空并且长度大于0
```java
if (contOptPerMsgEntityList != null && contOptPerMsgEntityList.size() > 0) {
// ...
}
```
2. 对列表中的每个元素进行操作,设置一些属性值,并返回修改后的元素列表
```java
contOptPerMsgEntityList = contOptPerMsgEntityList.stream()
.map(perMsg -> {
perMsg.setGroupType(groupType);
perMsg.setPersonType(personType);
perMsg.setWelfareNo(welfareNo);
return perMsg;
})
.filter(perMsg -> {
// ...
})
.collect(Collectors.toList());
```
3. 根据一些条件删除数据库中的数据
```java
contOptPerMsgService.remove(
new LambdaQueryWrapper<ContOptPerMsgEntity>()
.eq(ContOptPerMsgEntity::getWelfareNo, welfareNo)
.eq(ContOptPerMsgEntity::getGroupType, groupType)
.eq(ContOptPerMsgEntity::getPersonType, personType)
);
```
4. 批量保存修改后的元素列表到数据库
```java
contOptPerMsgService.saveBatch(contOptPerMsgEntityList);
```
为了优化这段代码,可以考虑以下几点:
1. 避免空指针异常,可以使用Java 8中的Optional类来判断列表是否为空
```java
if (Optional.ofNullable(contOptPerMsgEntityList).map(List::isEmpty).orElse(true)) {
// ...
}
```
2. 如果列表元素较多,可以考虑使用并行流来加速处理
```java
contOptPerMsgEntityList = contOptPerMsgEntityList.parallelStream()
// ...
.collect(Collectors.toList());
```
3. 避免重复创建LambdaQueryWrapper对象,可以使用链式调用的方式
```java
contOptPerMsgService.lambdaUpdate()
.eq(ContOptPerMsgEntity::getWelfareNo, welfareNo)
.eq(ContOptPerMsgEntity::getGroupType, groupType)
.eq(ContOptPerMsgEntity::getPersonType, personType)
.remove();
```
阅读全文