如何在数据库客户端 spring boot webflux 中按数组设置值的位置

How to set where in values by array in Database client spring boot webflux

我在 Spring boot.I 中使用 webflux 和数据库客户端有这样的字符串类型 String status="报价,订单,购买"; 我想在(where in)中设置这些值 caluse.Code 是这样的。

String status="Quoted,Order,Bought";
 @Override
public Flux<Quotation> statusCreatedBy(Pageable pageable, String createdBy,String status) {
    RowsFetchSpec<Quotation> list =db.sql("SELECT e.id AS e_id, e.amount AS e_amount, e.description AS e_description FROM quotation e  WHERE e.created_by = '"+createdBy+"' and e.name in ('"+status+"') LIMIT "+pageable.getPageSize()+" OFFSET "+pageable.getOffset()).map(this::process);
    return list.all();
}

我得到了 sql 这样的语法。

where e.name in ('Quoted,Order,Bought')

我想要的是

where e.name in ('Quoted','Order','Bought')

请指导我修复 this.Also 我不知道数组的数量 values.Sometime 状态可以是 4 或 5 值,具体取决于 user.For 示例,

String status='Quoted,Order,Bought,Cancel,Transfer' or Status='Quoted'

谢谢

使用

"," 替换为 "','"
status.replace(",", "','")

所以你的陈述看起来像:

"… and e.name in ('" + status.replace(",", "','") + "') …"

虽然手动构建 SQL 可行,但最佳做法(更容易恕我直言)是使用库将变量替换为占位符。考虑使用 JPA、Hibernate 等, .