我有一个名为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过滤结果。
因此,在您的情况下,您可以添加三种模式where语句
AND YIDPRO = 'CMC' AND YIDSER = 'SOLICSEG' AND ZSUCCE = 'N'
除了下次,请避免使用多个过滤器语句并将它们合并为一个。流中的每个语句都对流中的每个对象执行,因此,在您的情况下,您将拥有三个可以合并为一个的执行。