小编Wal*_*mou的帖子

SQL查询的Spring Data R2DBC参数条件绑定

我在使用 Spring Data R2DBC DatabaseClient 将条件参数绑定到 SQL 查询时遇到困难。两个参数可以为空。由于DatabaseClient需要明确指定参数为空,因此我尝试了以下语法,但条件参数未附加到现有参数中:

public Mono<Void> createAddress(Address address) {
    DatabaseClient.GenericExecuteSpec bindings = databaseClient.execute(addressesQueries.getProperty("addresses.insert"))
            .bind("line1", address.getLine1())
            .bind("zipCode", address.getZipCode())
            .bind("city", address.getCity())
            .bind("countryId", address.getCountry())
            .bind("id", address.getId()); // UUID

            if(address.getLine2() == null) {
                bindings.bindNull("line2", String.class);
            } else {
                bindings.bind("line2", address.getLine2());
            }
            if(address.getState() == null) {
                bindings.bindNull("state", String.class);
            } else {
                bindings.bind("state", address.getState());
            }

    return bindings.fetch().rowsUpdated().then();
}
Run Code Online (Sandbox Code Playgroud)

SQL查询:

INSERT INTO addresses(id,line1,line2,zip_code,city,state,country) VALUES(:id,:line1,:line2,:zipCode,:city,:state,:countryId)
Run Code Online (Sandbox Code Playgroud)

我知道我可以拆分 SQL 查询来处理带/不带空参数的情况,但如果我有多个条件参数,就会有点复杂。

你知道一种解决方案可以帮助我保留一个 SQL 查询并在 Java 代码中处理条件参数吗?

sql postgresql reactor-netty spring-webflux spring-data-r2dbc

4
推荐指数
1
解决办法
8282
查看次数