使用Java 8 Lambda表达式将实体映射到DTO

当我们需要将DTO转换为实体(Hibernate实体等)并向后转换时,我们都会面临混乱的开销代码。

在我的示例中,我将用Java 8演示代码如何变得越来越短。

让我们创建目标DTO:

public class ActiveUserListDTO {public ActiveUserListDTO() {}public ActiveUserListDTO(UserEntity userEntity) {this.username = userEntity.getUsername();...}
}

使用Spring数据JPA API检索所有实体的简单查找方法:

userRepository.findAll();Problem:Find.All() method signature (like many others) returns java.lang.Iterable<T>
1java.lang.Iterable<T> findAll(java.lang.Iterable<ID> iterable)

我们不能使用java.lang.Iterable(*在集合上运行的Streams来制作Stream。每个Collection都是Iterable,但并不是每个Iterable都是必需的Collection)。

那么,如何获取Stream对象以获得Java8 Lambda的Power?

让我们使用StreamSupport对象将Iterable转换为Stream:

Stream<UserEntity> userEntityStream = StreamSupport.stream(userRepository.findAll().spliterator(), false);

大。 现在,我们掌握了Stream,这是Java 8 Labmda的关键!

剩下的就是地图和收集:

List<ActiveUserList> activeUserListDTOs =userEntities.stream().map(ActiveUserList::new).collect(Collectors.toList());

我正在使用Java 8 Method Reference,因此将每个实体初始化(和映射)到dto中。

因此,让我们对所有内容进行简短介绍:

List<ActiveUserList> activeUserListDTOs=StreamSupport.stream(userRepository.findAll().spliterator(), false).map(ActiveUserList::new).collect(Collectors.toList());

那很整齐!!

伊丹

相关文章:

  • 使用Spring AOP,自定义注释和反射为您的应用程序审核基础结构
  • AmazonSQS和Spring用于消息传递队列
  • 身份验证和授权服务作为开源解决方案
  • 使用Spring Integration使用Future对象调用Async方法调用

翻译自: https://www.javacodegeeks.com/2014/07/mapping-your-entities-to-dtos-using-java-8-lambda-expressions.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340592.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用pp架构形成计算机集群请求的地址无效_干货!史上最详细脑图《大型网站技术架构》...

1. 介绍一下《大型网站技术架构》这本书可能很多人都看过&#xff0c;小编个人觉得真的是非常不错的一本书。看完这本书后&#xff0c;你会对如何设计大型网站架构&#xff0c;有非常清晰的思路。如果还没有读过的小伙伴&#xff0c;赶紧去读一读吧。PS&#xff1a;小编这里有这…

linux 启动rsyslog服务_linux rsyslog服务部署

软件安装在centos7&#xff0c;rsyslog默认安装&#xff0c;重点在于配置文件。[rootlocalhost samba]# vim /etc/rsyslog.conf$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)$ModLoad imjournal # provides access to the systemd…

泰坦尼克号数据_数据分析-泰坦尼克号乘客生存率预测

项目背景目标预测一个乘客是否能够在泰坦尼克号事件中幸存。概述1912年4月15日&#xff0c;泰坦尼克号在首次航行期间撞上冰山后沉没&#xff0c;船上共有2224名人员&#xff08;包括乘客和机组人员&#xff09;&#xff0c;共有1502人不幸遇难。造成海难失事的原因之一是乘客和…

linux mysql服务器安装_Linux服务器MySQL安装

Linux服务器MySQL安装1. MySQL官网下载如图&#xff1a;2. 安装MySQL[rootiZ2zebb0428roermd00462Z /]# rpm -ivh https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch#过滤MySQL&#xff1a;[rootiZ2zebb0428roermd00462Z /]#yum repolist all |grep mysql#ena…

客户端渲染换为服务器端渲染_服务器与客户端渲染(AngularJS与服务器端MVC)

客户端渲染换为服务器端渲染关于服务器与客户端应用程序渲染的讨论很多。 虽然没有“一刀切”的解决方案&#xff0c;但我将尝试从不同的角度主张客户端&#xff08;特别是AngularJS&#xff09;。 首先是建筑。 建筑 做得好的架构已经明确定义了关注点分离&#xff08;SoS&am…

python3 array为什么不能放不同类型的数据_来自俄罗斯的凶猛彪悍的分析数据库ClickHouse...

点击上方蓝色字体&#xff0c;选择“设为星标”回复”资源“获取更多资源大数据技术与架构点击右侧关注&#xff0c;大数据开发领域最强公众号&#xff01;暴走大数据点击右侧关注&#xff0c;暴走大数据&#xff01;ClickHouse相关文章推荐&#xff1a;战斗民族开源 | ClickHo…

php mysql 实现原理_PHP底层和mysql的通信原理

要清楚的几个概念&#xff1a;FPM进程&#xff1a;进程数在php-fpm.ini中设置。没有设置 max_requests &#xff0c;那么进程是不会销毁的&#xff0c;也就是说当一个进程里面出现死循环或者内存溢出等导致进程僵死的情况出现的时候&#xff0c;处理的进程就会少一个。mysql连接…

通过READ-BEHIND CACHE来控制缓慢的生产者

在我们的互联世界中&#xff0c;我们经常使用我们不拥有或无权改善的API中的数据。 如果一切顺利&#xff0c;他们的表现就会很好&#xff0c;每个人都会感到高兴。 但是太多次&#xff0c;我们不得不使用延迟小于最佳延迟的 API。 当然&#xff0c;答案是缓存该数据 。 但是&…

mysql用户名锁定_MySQL用户锁定

修改方式&#xff1a;set global log_warnings2;MySQL 5.5版本官方文档中&#xff0c;并没有用户锁的状态。因此不存在用户会被锁。。The account-locking capability depends on the presence of the account_locked column in themysql.user table. For upgrades to MySQL 5.…

python package和目录_PyCharm中Directory与Python package的区别

对于Python而言&#xff0c;有一点是要认识明确的&#xff0c;python作为一个相对而言轻量级的&#xff0c;易用的脚本语言(当然其功能并不仅限于此&#xff0c;在此只是讨论该特点)&#xff0c;随着程序的增长&#xff0c;可能想要把它分成几个文件&#xff0c;以便逻辑更加清…

mysql过滤器_MYSQL复制过滤器

vim /etc/my.cnf.d/mariadb-server.cnf[mysqld]binlog-do-dbdb1 #白名单模式&#xff0c;仅允许主服务器上生成db1的二进制日志&#xff0c;此选项不支持一行指定多个参数&#xff0c;需要每个参数写一行binlog-do-dbdb2重启服务systemctl restart mariadb.service主服务器…

mysql锁表查询_Mysql数据库锁情况下开启备份导致数据库无法访问处理分享

[背景简介]MySQL是一种开放源代码的关系型数据库管理系统(RDBMS)&#xff0c;因为其速度、可靠性和适应性而备受关注。大多数人都认为在不需要事务化处理的情况下&#xff0c;MySQL是管理内容最好的选择。mysql虽然功能未必很强大&#xff0c;但因为它的开源、广泛传播&#xf…

junit编写测试代码_编写数据访问代码测试-不测试框架

junit编写测试代码当我们向数据访问代码编写测试时&#xff0c;是否应该测试其公共API的每种方法&#xff1f; 一开始听起来很自然。 毕竟&#xff0c;如果我们不测试所有内容&#xff0c;那么如何知道我们的代码可以按预期工作&#xff1f; 这个问题为我们提供了重要的线索&…

mysql直接执行文件格式_Windows 环境下执行 .sql 格式文件方式

windows 命令行中有2种执行 .sql 文件的方式&#xff1a;直接行文件 和 先进入mysql命令行然后执行文件。具体操作如下:1. 直接在windows命令行执行。打开windows命令行(winR打开运行窗口然后输入cmd&#xff0c;回车)&#xff0c;进入mysql的本机地址&#xff0c;如果配置了环…

python输入多个坐标点_判断多个坐标是否在同一条直线上|Python练习系列[13]

练习内容:判断多个坐标是否在同一条直线上完整代码和注释如下print(请输入几个点的横纵坐标,程序将会返回这几个点是否在同一条直线上)def coor_nums():#获得每个值的横纵坐标int_list[]#初始化坐标列表wrong_list[]#初始化错误列表judgement#判断是否需要修正坐标值while True…

Java大数据处理的流行框架

大数据挑战 在公司需要处理不断增长的数据量的各个领域中&#xff0c;对大数据的概念有不同的理解。 在大多数这些情况下&#xff0c;需要以某种方式设计所考虑的系统&#xff0c;以便能够处理该数据&#xff0c;而不会随着数据大小的增加而牺牲吞吐量。 从本质上讲&#xff0c…

工信部python证书多少钱_python requests SSL证书问题

错误信息如下&#xff1a;requests.exceptions.SSLError: ("bad handshake: Error([(SSL routines, tls_process_server_certificate, certificate verify failed)],)",)python做爬虫&#xff0c;对于有的网站&#xff0c;需要验证证书&#xff0c;比如&#xff1a;1…

mysql binlog线程恢复_使用MySQL SQL线程回放Binlog实现恢复

[toc]1. 需求部分1.1 基于MySQL复制同步特性&#xff0c;尝试使用Replication的SQL线程来回放binlog&#xff0c;可基于以下逻辑模拟场景做全量xtrabackup备份模拟日常备份执行sysbench压测4张表&#xff0c;20个线程&#xff0c;压测10分钟&#xff0c;模拟大量binlog删除实例…

带有Prometheus的Spring Boot和测微表第6部分:保护指标

以前&#xff0c;我们使用Prometheus成功启动了Spring Boot应用程序。 Spring应用程序中的一个端点正在公开我们的指标数据&#xff0c;以便Prometheus能够检索它们。 想到的主要问题是如何保护此信息。 Spring已经为我们提供了强大的安全框架 因此&#xff0c;将其轻松用于…

列举python中常用的数据类型_列举Python常用数据类型并尽量多的写出其中的方法...

#1 把字符串的第一个字符大写string.capitalize()#2 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串string.center(width)#3 返回 str 在 string 里面出现的次数&#xff0c;如果 beg 或者 end 指定则返回指定范围内 str 出现的次数string.count(str, beg0, endl…