按照官方文档,在我的Spring配置中添加@enableSpringDataWebSupport
注释允许在查询中自动插入谓词
类:
@RequestMapping(method = RequestMethod.GET, path="/find")
public ResponseEntity<PagedResources<FooResource>> find(Pageable pageable, PagedResourcesAssembler<Foo> assembler, @QuerydslPredicate(root = Foo.class) Predicate predicate) {
Page<Foo> foos = fooRepository.findAll(predicate, pageable)
final ResourceAssemblerSupport<Foo, FooResource> fooResourceAssembler = new ....;
final PagedResources<FooResource> pagedResources = assembler.toResource(foos, fooResourceAssembler);
return new ResponseEntity<>(pagedResources, HttpStatus.OK);
}
然后我可以在执行GET请求时轻松地进行搜索:
GET /foo/name?=bob&name=alice&age=20
是否可以在查询中直接使用此运算符?
(如果有关系的话,我使用的是Spring Data Mongodb)
自定义查询DSL绑定-大于比较
您可以通过扩展QueryDSLPredicateExecutor
和QueryDSLBinderCustomizer
,在存储库中定义自己的QueryDSL绑定:
public interface FooRepository
extends CrudRepository<Foo, Integer>, QueryDslPredicateExecutor<Foo>, QuerydslBinderCustomizer<QFoo> {
default void customize(final QuerydslBindings bindings, final QFoo foo) {
SingleValueBinding<NumberPath<Integer>, Integer> singleBinding = new SingleValueBinding<NumberPath<Integer>,Integer>(){
@Override
public Predicate bind(NumberPath<Integer> path, Integer ageValue) {
return path.gt(ageValue);
}
};
bindings.bind(foo.age).first(singleBinding);
}
}
我不是查询DSL专家,但我的理解是:
另一种选择是为参数提供下限和上限,如下所示:?age=10&age=30
。然后,定义以下绑定:
default void customize(final QuerydslBindings bindings, final QFoo foo) {
bindings.bind(foo.age).all((path, values) -> {
Iterator<? extends Long> it = values.iterator();
return path.between(it.next(), it.next());
});
}
我想使用具有QueryDSL支持的Spring Data JDBC。根据Spring留档(https://docs.spring.io/spring-data/jdbc/docs/current/reference/html/#core.extensions.querydsl),它是受支持的,但我无法使其工作。 我使用MariaDB作为数据库,我的SpringBoot版本是2.6.0。 我对pom
问题 你想让某个类的实例支持标准的比较运算(比如>=,!=,<=,<等),但是又不想去实现那一大丢的特殊方法。 解决方案 Python类对每个比较操作都需要实现一个特殊方法来支持。 例如为了支持>=操作符,你需要定义一个 __ge__() 方法。 尽管定义一个方法没什么问题,但如果要你实现所有可能的比较方法那就有点烦人了。 装饰器 functools.total_ordering 就是用来简化这个
我使用querydsl来构造动态搜索查询(并使用spring data mongodb API来执行它)。是否有一种方法可以构造支持$text(全文)搜索的querydsl查询?
本文向大家介绍Git 比较分支,包括了Git 比较分支的使用技巧和注意事项,需要的朋友参考一下 示例 显示的尖端new与的尖端之间的变化original: 显示上的所有更改new,因为它从支original: 仅使用一个参数,例如 git diff原始 相当于 git diff原始的..HEAD