Java 11:JOIN表,获取Java流

是否曾经想过如何将联接的数据库表转换为Java Stream? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它。 我们将从Java 8示例开始,然后研究Java 11的改进。

Java 8和JOIN

速度允许将动态JOIN:ed数据库表作为标准Java流使用。 我们首先来看一个使用Sakila示例数据库的Java 8解决方案:

Speedment app = ...;JoinComponent joinComponent = app.getOrThrow(JoinComponent.class);Join<Tuple2OfNullables<Language, Film>> join = joinComponent.from(LanguageManager.IDENTIFIER).innerJoinOn(Film.LANGUAGE_ID).equal(Language.LANGUAGE_ID).build();join.stream().forEach(System.out::println);

这将产生以下输出(经过重新格式化并缩短了可读性):

Tuple2OfNullablesImpl {LanguageImpl { languageId = 1, name = English, ... }, FilmImpl { filmId = 1, title = ACADEMY DINOSAUR, ... }
}
Tuple2OfNullablesImpl {LanguageImpl { languageId = 1, name = English, ... }, FilmImpl { filmId = 2, title = ACE GOLDFINGER, ... }
}
Tuple2OfNullablesImpl {LanguageImpl { languageId = 1, name = English, ... },FilmImpl { filmId = 3, title = ADAPTATION HOLES, ... }
}
...

Java 11和JOIN

在新的Java版本11中,存在Local-Variable-Type-Inference(又称var声明),这使得使用Speedment编写联接更加容易。 我们不必显式声明join变量的类型:

Speedment app = ...;JoinComponent joinComponent = app.getOrThrow(JoinComponent.class);var join = joinComponent.from(LanguageManager.IDENTIFIER).innerJoinOn(Film.LANGUAGE_ID).equal(Language.LANGUAGE_ID).build();join.stream().forEach(System.out::println);

代码分解

from()方法获取我们要使用的第一个表( Language )。 innerJoinOn()方法采用我们要连接的第二张表的特定列。 然后, equal()方法从我们要用作连接条件的第一个表中获取一列。 因此,在此示例中,我们将获得匹配的LanguageFilm实体,其中Film.LANGUAGE_ID列等于Language.LANGUAGE_ID

最后, build()将构造我们的Join对象,该对象又可以用于创建Java Streams。 Join对象可以反复使用。

JOIN的类型和条件

我们可以使用innerJoinOn() leftJoinOn() rightJoinOn()crossJoin()和表可以使用的条件被接合equal() notEqual() lessThan() lessOrEqual() greaterThan()lessOrEqual()

下一步是什么?

在此处下载开源Java 11。

在此处下载Speedment。

阅读Speedment用户指南中有关JOIN功能的所有内容。

翻译自: https://www.javacodegeeks.com/2018/12/java-11-join-tables-java-streams.html

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

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

相关文章

mysql宽字节注入_转宽字节注入详解

在mysql中&#xff0c;用于转义的函数有addslashes&#xff0c;mysql_real_escape_string&#xff0c;mysql_escape_string等&#xff0c;还有一种情况是magic_quote_gpc&#xff0c;不过高版本的PHP将去除这个特性。首先&#xff0c;宽字节注入与HTML页面编码是无关的&#xf…

【渝粤教育】电大中专中药制剂学 (2)作业 题库

1.根据药典、药品标准等将药物加工制成具有一定规格&#xff0c;可直接用于临床的药物制品&#xff0c;称为&#xff08;&#xff09;。 A.制剂 B.剂型 C.单味中药 D.中成药 E.炮制 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;D 2.药材经过炮制后可直接用于中医临…

mysql集群软件有哪些_浅谈数据库集群软件优缺点有哪些

满心狼藉回答时间&#xff1a;2019-12-05向TA提问集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合&#xff0c;为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图&#xff0c;同时提供接近容错机的故障恢复能力。集群…

【渝粤教育】电大中专办公设备使用与维护 (2)作业 题库

1以下哪个不是现代办公硬件需求的主要依赖&#xff08;&#xff09;。 A扫描仪 B计算机 C办公桌 D打印机 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;B 2现代办公设备可分为计算机、通信&#xff08;&#xff09;三大类。 A电子工具 B办公机械 C路由器 D碎纸机 错…

input发送a.jax_JAX-RS 2.0中的透明PATCH支持

input发送a.jaxPATCH方法是最不受欢迎的HTTP方法之一&#xff0c;因为直到最近才真正没有一种标准的PATCH格式。 一段时间以来&#xff0c;它已经针对JSON进行了标准化&#xff0c;因此有很多库可以为您完成繁重的工作。 出于本博客的目的&#xff0c;我将使用json-patch&#…

python 日志函数参数_将日志信息作为参数传递给函数

我使用的Python库使用logging模块。但是&#xff0c;我创建了自己的log函数&#xff0c;脚本在内部使用。在下面是我要使用的日志记录功能&#xff1a;def log(name, content, swtch : bool None, time None):time time or datetime.now(pytz.timezone(US/Pacific))if swtch…

【渝粤教育】电大中专就业指导作业 题库

1.&#xff08; &#xff09;给中职生就业带来的机遇和挑战 A.一带一路 B.发展标准化服务业 C.“十三五”规划 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;C 2.最受企业欢迎的人才应具备&#xff08; &#xff09;素质 A.道德品质、文化认同、敬业精神、团队意识、…

python回车和换行的区别_回车与换行的解释~!

Unix/Linux和Windows回车换行Linux/Unix下的回车符与windows下的不同&#xff0c;Linux/unix下的回车符是0d,而在windows下则是0d0a&#xff0c;据说这和电脑刚开始发展时的电传打印机的速度有关。在计算机还没有出现之前&#xff0c;有一种叫电传打字机(teletype model 33)的玩…

【渝粤教育】电大中专常见病药物治疗作业 题库

1.作为退热药&#xff0c;阿司匹林的劣势是&#xff08; &#xff09;。 A.口服吸收迅速而完全 B.婴幼儿发热用阿苯片 C.儿童用药可引起Reye综合征&#xff0c;尤其是病毒性感染引起的发热 D.作用于下丘脑体温调节中枢 E.解热镇痛作用较强 错误 正确答案&#xff1a;左边查询 学…

在Spring Boot启动时运行代码

Spring Boot会自动为我们执行很多配置&#xff0c;但是迟早您将不得不做一些自定义工作。 在本文中&#xff0c;您将学习如何进入应用程序引导生命周期并在Spring Boot启动时执行代码 。 因此&#xff0c;让我们看看该框架提供了什么。 1. Bean初始化时执行方法 Spring启动您…

错误:在keystone中无法找到默认角色user_第四章 keystone认证组件安装1

1、在控制节点安装rabbitmq、memcached组件apt-get -y install rabbitmq-server memcached python-pymysql # 设置openstack用户 rabbitmqctl add_user openstack password #后一个password是密码&#xff0c;需要特别注意&#xff0c;要与后面组件访问时的密码一致 #设置ope…

【渝粤教育】电大中专建设工程法规1作业 题库

1.注册建造师应当在相应的岗位上执业。但同时&#xff0c;国家鼓励和提倡注册建造师( )。 A.一师多岗 B.一师全岗 C.一师专岗 D.专岗专职 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.下列规范性文件中,效力最高的是( )。 A.地方性法规 B.行政法规 C.行政规章…

【渝粤教育】电大中专新媒体营销实务 (13)作业 题库

1.新媒体在进行内容传播时&#xff0c;可以做到将文字、图片、视频等同时传播&#xff0c;呈现出&#xff08; &#xff09;的特点。 A.移动化 B.多元化 C.便捷性 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.第四媒体发展到宽带互联网阶段成为&#xff08; &a…

ubuntu加了张固态_将ubuntu系统迁移到ssd固态

朋友送了一个固态硬盘给我&#xff0c;因此将原机械硬盘上的系统迁移到固态硬盘上。原机械硬盘(dev/sdb)装有win10和ubuntu双系统。分区情况如下&#xff1a;sda1&#xff1a;ESP分区sda2&#xff1a;资料sda3&#xff1a;资料sda4&#xff1a;swap分区&#xff0c;被我干掉了&…

【渝粤教育】电大中专测量学 (3)作业 题库

试卷答案 1水准面是水体受地球重力的作用而形成的&#xff0c;其物理特点是在同一水准面上的任意一点具有相等的重力势位&#xff0c;上面任意一点的铅垂线都垂直于该点所在曲面的切平面。 A正确 B错误 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2在地球表面&a…

php cdi_教程:编写自己的CDI扩展

php cdi今天&#xff0c;我将向您展示如何编写CDI扩展。 CDI提供了一种扩展功能的简便方法&#xff0c;例如 添加自己的范围&#xff0c; 启用Java核心类进行扩展&#xff0c; 使用注释元数据进行扩充或修改&#xff0c; 以及更多。 在本教程中&#xff0c;我们将实现一个…

【渝粤教育】广东开放大学 海外社交媒体营销 形成性考核 (45)

选择题 题目&#xff1a;经营战略计划的制定和实施&#xff0c;要以特定的()为依据。 答案&#xff1a;看左侧 题目&#xff1a;战略经营单位是企业值得为其专门制定一种经营战略的()经营单位。 答案&#xff1a;看左侧 题目&#xff1a;从20世纪初到第二次世界大战结束&#x…

centos编译mysql5.6_centos7上编译安装mysql5.6

注意&#xff0c;在做实验室统一关闭防火墙做的&#xff0c;在生产环境需要做防火墙规则的&#xff0c;大家要注意&#xff0c;做的时候尽量都是模仿生产环境的&#xff0c;比如服务一般都在/data/soft下面&#xff0c;尽量避免在/usr/local/下面。安装编译mysql所需要的软件[r…

【渝粤教育】广东开放大学 社会工作综合能力 形成性考核 (27)

选择题 题目&#xff1a;社会工作不同于其他理论性社会科学学科的重要之点是&#xff08; &#xff09;。 题目&#xff1a;关于社会工作价值观操作原则的说法&#xff0c;正确的有( )。 题目&#xff1a;作为一名专业社会工作者&#xff0c;必须遵守的原则不包括&#xff08; …

使用ELK堆栈进行日志聚合

1.简介 随着微服务的使用&#xff0c;创建稳定的分布式应用程序和摆脱许多遗留问题变得很容易。 但是微服务的使用也带来了一些挑战&#xff0c; 分布式日志管理就是其中之一。 由于微服务是隔离的&#xff0c;因此它们不共享数据库和日志文件&#xff0c;因此实时搜索&#xf…