Mysql
 sql >> Database >  >> RDS >> Mysql

Query di unione con selezioni multiple post java 8

L'approccio idiomatico qui sarebbe il seguente (usando l'API JDK 9):

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

Utilizza l'utile Optional.stream() metodo, che è stato aggiunto in JDK 9. In JDK 8, potresti invece farlo:

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

Ho scritto un blog su questo in modo più dettagliato qui.