mapstruct结合stream流轻松完成大数据属性转换和赋值
文章目录
前言
事情由来:
今天测试在禅道上给我提了一个bug,原因是导出excel数据居然需要恐怖的15s甚至更多,到底是什么原因呢?我首先是做了以下几步排查:
1、首先是换个电脑检查下,看是否是测试电脑的问题啊 哈哈😄
2、发下没有,这就开始检查之前的大哥如何写的代码呗
这里图片就不上了 直接说下其中的冗余和不合理,主要有以下几点:
1、双层for循环和单个for循环,然后其中还有嵌套dubbo远程调用
2、使用字符串拼接,效率很低,占用内存空间
一、mapstruct是什么?
MapSturct 是一个生成类型安全,高性能且无依赖的 JavaBean 映射代码的注解处理器(annotation processor)。
- 注解处理器
- 可以生成 JavaBean 之间那的映射代码
- 类型安全,高性能,无依赖性
二、使用步骤
1.项目实战使用
代码如下(示例):
代码如下:
这里我使用的是syringBuild拼接字符串,就告诉你一点这个它的效率最高,相信很多人说:你说什么就什么啊,所以直接上菜
将指定的字符串追加到此字符序列。 String参数的字符会被追加,顺序是将该序列的长度与参数的长度相加。如果str为空,则追加四个字符"null"。 设n是这个字符序列在执行append方法之前的长度。如果k小于n,则新字符序列中索引k处的字符等于旧字符序列中索引k处的字符;否则,它等于参数str中下标k-n处的字符。 参数: STR -一个字符串。 返回: 对该对象的引用
public AbstractStringBuilder append(String str) {
if (str == null)
return appendNull();
int len = str.length();
ensureCapacityInternal(count + len);
str.getChars(0, len, value, count);
count += len;
return this;
}
上图的几个步骤,直接把省市区地址的属性直接编译器拼在到了一个属性上
2.stream流读入数据
代码如下(示例):
这里对应匹配填充
总结
例如:以上就是今天要讲的内容,本文仅仅简单介绍了mapstruct和stream的使用,而他们提供了大量能使我们快速便捷地处理数据的函数和方法,期待后期大家分享。