您是否知道可以使用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)。
表,视图和联接可以很容易地转化为标准的Java与Speedment流。这就是在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
|
joinComponent的几个方法描述:
from()方法获取我们要使用的第一个表(Film)。
leftJoinOn()方法采用我们要连接的第二张表的特定列。
equal()方法从我们要用作连接条件的第一个表中获取一列。
最后,构造我们的对象,该对象又可以用于创建Java Streams。可以反复使用该对象。 注意怎样的构造函数中提供的方法。
还请注意如何从记录
中获取电影和语言实体。这比以前的Java版本有了很大的改进,以前我们必须提供相当长的自定义类像get0()和get1()之类方法或使用元组,而不是更多的描述film()和language()JOIN的类型和条件。在此处 下载开源Java 14 。
在此处下载Speedment 。