Java 15 – Text Block

W Javie 15 dotarł do nas feature o nazwie Text Block, choć w fazie preview był już od bodaj wersji 13.

Mam dla niego nawet doskonały, praktyczny przykład wprost z mojego kursu Kompletna aplikacja w języku Java – od zera do installera ;). Do tej pory, gdy chcieliśmy sformatować wizualnie np. zapytanie do bazy danych

ResultSet resultSet = statement
                    .executeQuery("SELECT R.ID, R.ROOM_NUMBER, B.BED FROM ROOMS AS R LEFT JOIN BEDS AS B ON R.ID=B.ROOM_ID");

Kończyliśmy z czyś takim

Statement statement = SystemUtils.connection.createStatement();
ResultSet resultSet = statement.executeQuery("" +
                            "SELECT " +
                                "R.ID, " +
                                "R.ROOM_NUMBER," +
                                "B.BED " +
                            "FROM " +
                                "ROOMS AS R " +
                            "LEFT JOIN " +
                                "BEDS AS B " +
                            "ON" +
                                " R.ID=B.ROOM_ID");

Używając “bloku tekstu” możemy zapisać to w o wiele przyjemniejszy dla oka sposób:

Statement statement = SystemUtils.connection.createStatement();
ResultSet resultSet = statement.executeQuery("""
                            SELECT 
                              R.ID,
                              R.ROOM_NUMBER,
                              B.BED 
                           FROM
                              ROOMS AS R
                           LEFT JOIN 
                              BEDS AS B 
                           ON
                              R.ID=B.ROOM_ID
                            """);

Odpada nam więc ciągłe otwieranie ” i używanie plusów do łączenia. Blok tekstu zaczynamy i kończymy potrójnym cudzysłowiem """

Dodatkowo wewnątrz bloku możemy do woli korzystać z bez konieczności ciągłego używania \” np.

"""
 Przykład "użycia"
"""

Text block jest traktowany jak zwyczajny String, więc możemy spokojnie zastosowań String.format bądź .replace, by wstrzyknąć tam dane.

int id = 2;

String query  ="""
                    SELECT 
                       ID,
                       ROOM_NUMBER
                    FROM 
                       ROOM
                    WHERE
                       ID = %d 
""";

String finalQuery = String.format(query, id);

Dodano nawet specjalną funkcję do klasy String, by ułatwić powyższe

            int id = 2;

            String finalQuery  ="""
                    SELECT 
                       ID,
                       ROOM_NUMBER
                    FROM 
                       ROOM
                    WHERE
                       ID = %d 
                    """.formatted(id);

By być na bieżąco i mieć realny wpływ na tematykę tworzonych przeze mnie artykułów zapraszam do dołączenia do mojego newslettera.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *