Java14:使用Java 14的新记录联接数据库表
您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它。 我们将从如何设置您的项目开始。
设定
下载Java 14 。 转到Speedment Initializer并下载您的项目骨架(包括pom.xml
)。 修改您的以下行
pom.xml
文件:
< maven.compiler.source >14</ maven.compiler.source > < maven.compiler.target >14</ maven.compiler.target > ... < plugin > < artifactId >maven-compiler-plugin</ artifactId > < version >3.8.1</ version > < configuration > < release >14</ release > < compilerArgs > --enable-preview </ compilerArgs > </ configuration > </ plugin >
确保您拥有支持新Java 14功能的最新版本的ide(例如IDEA 2010.1)。
加速加入
速度允许将动态JOIN:ed数据库表作为标准Java流使用。 在本文中,我们将使用示例性的Sakila数据库,其中包含电影,演员,语言等。下载Sakila
这里还是抢泊坞版本在这里 。
借助Speedment,可以轻松地将表,视图和联接转换为标准Java流。 这就是在Java 14中的样子:
var speedment = new SakilaApplicationBuilder() .withPassword( "sakila" ) .withBundle(JoinBundle. class ) .build(); var joinComponent = speedment.getOrThrow(JoinComponent. class ); var films = speedment.getOrThrow(FilmManager. class ); // Define a Java 14 "record" that can hold a Film and a Language record FilmLanguage(Film film, Language language) {} var join = joinComponent.from(films.getTableIdentifier()) .leftJoinOn(Language.LANGUAGE_ID).equal(Film.LANGUAGE_ID) // Provide the constructor of the Java 14 "record" // to be used to construct Film/Language composites .build(FilmLanguage:: new ); join.stream() .forEach(filmLanguage -> System.out.format( "%s is in %s%n" , filmLanguage.film().getTitle(), filmLanguage.language().getName()) );
这将产生以下输出:
ACADEMY DINOSAUR is in English ACE GOLDFINGER is in English ADAPTATION HOLES is in English ...
代码分解
from()
方法获取我们要使用的第一个表( Film
)。 的
innerJoinOn()
方法采用我们要连接的第二张表的特定列。 然后, equal()
方法从我们要用作连接条件的第一个表中获取一列。 因此,在此示例中,我们将获得匹配的Film
和Language
实体,其中Language.LANGUAGE_ID
列等于Film.LANGUAGE_ID
。
最后, build()
将构造我们的Join
对象,该对象又可以用于创建Java Streams。 Join
对象可以反复使用。
请注意, record FilmLanguage
的构造函数是如何在
build()
方法。 还请注意如何从记录中获取电影和语言实体(例如filmLanguage.film()
)。 与以前的Java版本相比,这是一个很大的改进,在Java版本中,我们不得不提供较长的自定义类,或者使用具有访问器的元组get0()
如get0()
和get0()
get1()
而不是更具描述性的film()
和language()
JOIN的类型和条件
我们可以使用innerJoinOn()
leftJoinOn()
rightJoinOn()
和crossJoin()
和表可以使用的条件被接合equal()
notEqual()
lessThan()
lessOrEqual()
greaterThan()
和lessOrEqual()
下一步是什么?
在此处下载开源Java 14。
在此处下载Speedment。
阅读Speedment用户指南中有关JOIN功能的所有内容。
翻译自: https://www.javacodegeeks.com/2020/02/java14-join-database-tables-with-java-14s-new-record.html
Java14:使用Java 14的新记录联接数据库表相关推荐
- java联接pg库_Java14:使用Java 14的新记录联接数据库表
java联接pg库 您是否知道可以使用Java 14的预览记录功能将数据库表连接到Java Stream中? 阅读这篇简短的文章,并了解如何使用Speedment Stream ORM完成它. 我们将 ...
- Java 14的新功能
2020年3月17日,Oracle发布了名为Java 14的Java新版本,其中包括许多新功能,工具,安全性,调试和更新的文档方面的改进. 但是,Oracle还向您提供Java的较旧版本,因为它具有向 ...
- java实现遍历树形菜单方法——数据库表的创建
这里主要是oracle数据库表的创建: --创建树形菜单表 create table vote_tree (id number(10) not null,text varchar2(30) not n ...
- 新催收系统数据库表设计的小结
总结下前几个月设计的新催收系统,主要是数据库方面的一个设计. 解决旧催收系统的一个严重的性能问题. 可以讲需要开发新催收系统的根本原因,就是这个. 主因只有一个,就是帐单表h_bills. 这个表包括 ...
- java 导出word换行_Java 导出数据库表信息生成Word文档
一.前言 最近看见朋友写了一个导出数据库生成word文档的业务,感觉很有意思,研究了一下,这里也拿出来与大家分享一波~ 先来看看生成的word文档效果吧 下面我们也来一起简单的实现吧 二.Java 导 ...
- java 数据包含_java – 包含大量数据库表的通用实现
我正在处理的当前应用程序是一个很大的应用程序.该数据库由300个表组成,并且正在增长.目前它是一个桌面应用程序,但我们正在将它移动到网络上. 我们正在使用的技术是Spring(MVC)Hibernat ...
- 你好,了解一下Java 14带来的一系列新功能
Java 14带来的一系列新功能 Java 14包含比前两个发行版更多的新功能-其中大多数旨在简化编码. 劳尔·加布里埃尔·乌尔玛(Raoul-Gabriel Urma) 下载本文的PDF Java ...
- Java 14 有哪些新特性?
记录为 Java 提供了一种正确实现数据类的能力,不再需要为实现数据类而编写冗长的代码.下面就来看看 Java 14 中的记录有哪些新特性. 作者 | Nathan Esquenazi 译者 | 明明 ...
- Java 14 可能带来什么新特性?
点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | oschina 来源 | 公众号「开源中国」 JDK/Java 13 在一个月前已 ...
最新文章
- android adb命令
- C++ Map用法详解
- php 自动生成查询密码,PHP自动生成随绝密码
- Use Batch Apex
- 这些老外的名字你读对了吗?
- 内核中的kmalloc函数详解
- RMAN异机复制数据库(相同路径)
- 进程间通信————有名管道
- matlab中quiver,matlab quiver 比例尺
- 20190429 - 如何访问 macOS 的 httpd、mysql 等服务
- 交换机中对于tagged帧和untagged帧的处理
- 学习weka(1):weka软件安装使用教程
- 你为什么要去博物馆? 我的理由比较另类
- 如何创建强命名程序集(Strong Name Assembly)
- 大道至简:大数据、小数据、量化交易
- 2D轮转图选角色换衣服
- 【arcgis 批量将属性表批量导出成excel】
- 2021年起重机械指挥考试技巧及起重机械指挥考试试题
- 计算机应用世界排名,全球计算机杂志排名
- C++中模板类使用友元模板函数 和友员非模版函数!使用不当出现编译错误:无法解析的外部符号…