具有Java 8流过滤器的LIKE SQL

问题描述 投票:-1回答:1

我有一个名为Vd03154DTO的对象,该对象代表具有名为YIDPRO,YIDSER,TSINI,ZSUCCE,WINFOA和YIDDOC的列的表

也有一个

List<Vd03154DTO> listaregistros

我需要列出与查询“ wheres”匹配的记录。这是查询,我的疑问是何时以LIKE开头,我不知道如何使用流过滤器执行此SQL重新查询

SELECT COUNT(*) AS CNT_CLVER_NO FROM KEXG.VD03154
WHERE YIDPRO = 'CMC' AND YIDSER = 'SOLICSEG' AND TSINI
BETWEEN '2020-03-06 00:00:00.000000' AND '2020-03-07 00:00:00.000000'
AND ZSUCCE = 'N' 
AND (WINFOA LIKE '%CLVER_NO%' OR WINFOA LIKE '%CLVER_INEX%')
AND WINFOA NOT LIKE '%FRSOL_NO%' AND WINFOA NOT LIKE '%FRASE_NO%' 
AND WINFOA NOT LIKE '%FRSOL_INEX%' AND WINFOA NOT LIKE '%FRASE_INEX%' AND YIDDOC = '';

[[文本]]这是我正在使用寄存器处理的列表,无法满足要求。使用“ LIKE”启动SQL请求时,我已经停止了

    List<Vd03154DTO> query3 = listaregistros.stream()
            .filter(registro -> "CMC".equals(registro.getYIDPRO()))
            .filter(registro -> "SOLICSEG".equals(registro.getYIDSER()))
            .filter(registro -> "N".equals(registro.getZSUCCE()))


            .collect(Collectors.toList());      

你有什么想法吗?

java sql java-8 stream java-stream
1个回答
0
投票

如果从数据库中读取数据,则应避免使用Java过滤结果。

因此,在您的情况下,您可以添加三种模式where语句

AND YIDPRO = 'CMC' AND YIDSER = 'SOLICSEG' AND ZSUCCE = 'N'

除了下次,请避免使用多个过滤器语句并将它们合并为一个。流中的每个语句都对流中的每个对象执行,因此,在您的情况下,您将拥有三个可以合并为一个的执行。

© www.soinside.com 2019 - 2024. All rights reserved.