对于我的字符串查询参数,我可以使用QuerydslBinderCustomizer
轻松执行不区分大小写的包含搜索:
public interface CarRepository extends ReadOnlyRepository<Car, Integer>, QuerydslPredicateExecutor<Car>, QuerydslBinderCustomizer<QCar> {
@Override
default public void customize(QuerydslBindings bindings, QCar car) {
bindings.bind(String.class).first(
(StringPath path, String value) -> path.containsIgnoreCase(value));
字符串
我的URL:
http://my-service/cars?make=toy&model=cam
型
我会得到一辆车与使:丰田和型号:凯美瑞
但是如果我想使用多值查询参数进行搜索:
http://my-service/cars?make=toy&make=hond
型
只有第一个查询参数使用了不区分大小写并包含搜索。所以,我得到了Toyota,但我不会得到本田。这是预期的,因为API指定了first
。
我找到了all
,但我如何使用它来忽略大小写并使用contains?下面是我想做的,但这不起作用,因为path不是StringPath
:
bindings.bind(String.class).all(
(path, value) -> path.containsIgnoreCase(value));
型
1条答案
按热度按时间8i9zcol21#
这可以通过以下方式实现:
字符串