Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Union-Abfrage mit Mehrfachauswahl nach Java 8

Der idiomatische Ansatz hier wäre wie folgt (unter Verwendung der JDK 9-API):

try (Stream<Record5<UUID, UUID, String, Integer, String>> stream = valuesToQuery
        .stream()
        .map(this::getSelectQueryForValue)
        .reduce(Select::union)
        .stream() // JDK 9 method
        .flatMap(Select::fetchStream)) {
    ...
}

Es verwendet den nützlichen Optional.stream() -Methode, die in JDK 9 hinzugefügt wurde. In JDK 8 könnten Sie stattdessen Folgendes tun:

valuesToQuery
    .stream()
    .map(this::getSelectQueryForValue)
    .reduce(Select::union)
    .ifPresent(s -> {
        try (Stream<Record5<UUID, UUID, String, Integer, String>> stream = 
             s.fetchStream()) {
            ...
        }
    })

Hier habe ich ausführlicher darüber gebloggt.