使用Java 14的新記錄型別連線資料庫表 - Minborg

banq發表於2020-02-12

您是否知道可以使用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 。



 

相關文章