Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Consulta de união com várias seleções post java 8


A abordagem idiomática aqui seria a seguinte (usando a 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)) {
    ...
}

Ele usa o útil Optional.stream() , que foi adicionado no JDK 9. No JDK 8, você pode fazer isso:
valuesToQuery
    .stream()
    .map(this::getSelectQueryForValue)
    .reduce(Select::union)
    .ifPresent(s -> {
        try (Stream<Record5<UUID, UUID, String, Integer, String>> stream = 
             s.fetchStream()) {
            ...
        }
    })

Eu escrevi sobre isso em mais detalhes aqui.