使用Java 14的新记录类型连接数据库表 - Minborg


您是否知道可以使用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。可以反复使用该对象。 注意怎样的构造函数中提供的方法。
还请注意如何从记录

FilmLanguage
中获取电影和语言实体。这比以前的Java版本有了很大的改进,以前我们必须提供相当长的自定义类像get0()和get1()之类方法或使用元组,而不是更多的描述film()和language()JOIN的类型和条件。

在此处 下载开源Java 14 。
在此处下载Speedment 。