gpt4 book ai didi

java - 在查询生成器中使用子字符串操作字符串

转载 作者:行者123 更新时间:2023-12-01 16:30:31 25 4
gpt4 key购买 nike

我有一个像这样的查询生成器:

@Override
public List<ComplementoMaterial> findSomething(String codigoPrestador, String documentoPrestador, String numeroLote, String codDocumento, List<String> codigosServicos) {
return builder().query(sqlComplementos())
.set("codPrestador", codigoPrestador)
.set("docPrestador", documentoPrestador)
.set("numeroLote", numeroLote)
.set("codDocumento", codDocumento)
.set("codServicos", codigosServicos)
.mapper(new RowMapper<ComplementoMaterial>() {
@Override
public ComplementoMaterial mapRow(ResultSet rs, int rowNum) throws SQLException {
ComplementoMaterial c = new ComplementoMaterial();
c.setCodigoServico(rs.getLong("COD_SERVICO"));
c.setRegistroAnvisa(rs.getString("COD_MATERIAL"));
c.setReferencia(rs.getString("COD_REF_MATERIAL"));
c.setAutorizacaoFuncionamento(rs.getString("NUM_AUT_FAT"));
return c;
}
}).executeQuery();
}

当我设置codigosServicos时,我希望向他应用一个子字符串,因此对于每个索引,我需要在该字符串的第4个字符之后获取。例如:

如果在 codigoServicos 中我有一个如下的列表 ["Michael","Jackson","Lebron"],我需要查询仅采用 ["ael", "son", "on"]。

我已经尝试添加一个只是codigoServicos.substring(4),但由于他被设置为列表,所以这是不可能的。而且我也无法破坏集合来添加 for 循环。

有什么想法可以帮助我吗?

谢谢

最佳答案

您使用的是 Java 8+ 吗?您可以使用流在一行中完成此操作,如下所示:

.set("codServicos", codigosServicos.stream().map(s -> s.substring(4)).collect(Collectors.toList()))

否则你必须使用循环,抱歉。当然,您可以在执行 set 之前执行循环:

@Override
public List<ComplementoMaterial> findSomething(String codigoPrestador, String documentoPrestador, String numeroLote, String codDocumento, List<String> codigosServicos) {
List<String> substrings = new List<>(codigosServicos.size());
for (String name : codigosServicos) {
substrings.add(name.substring(4));
}
return builder().query(sqlComplementos())
.set("codPrestador", codigoPrestador)
.set("docPrestador", documentoPrestador)
.set("numeroLote", numeroLote)
.set("codDocumento", codDocumento)
// add list of substrings instead of the original list
.set("codServicos", substrings)
.mapper(new RowMapper<ComplementoMaterial>() {
@Override
public ComplementoMaterial mapRow(ResultSet rs, int rowNum) throws SQLException {
ComplementoMaterial c = new ComplementoMaterial();
c.setCodigoServico(rs.getLong("COD_SERVICO"));
c.setRegistroAnvisa(rs.getString("COD_MATERIAL"));
c.setReferencia(rs.getString("COD_REF_MATERIAL"));
c.setAutorizacaoFuncionamento(rs.getString("NUM_AUT_FAT"));
return c;
}
}).executeQuery();
}

关于java - 在查询生成器中使用子字符串操作字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62050565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com