如何使用CrudRepository与参数的变化?

问题描述 投票:3回答:4

我想展示一个人的表。用户应该能够通过主要是可选的属性发送查询和过滤。

问题:对于要过滤的每个属性,我必须使用`CrudRepository在spring-data-jpa中引入另一个方法:

public interface PersonRepository extends CrudRepository<Person, Long> {
    List<Person> findByFirstname(firstname);
    List<Person> findbyFirstnameAndLastname(first, last);
    List<Person> findByFirstnameAndLastnameAndAge(first, last, age);
    List<Person> findByFirstnameAndLastnameAndAgeAndCity(first, last, age, city);
}

问题:我怎么能做得更好(不必自己编写本地PreparedStatements)?

java spring spring-data-jpa jpql
4个回答
1
投票

Query by example允许通过将简单的过滤器标准填充到“示例”实体中来创建过滤器:

public interface PersonRepository extends CrudRepository<Person, Long> {
    <S extends T> Iterable<S> findAll(Example<S> example);
}

...

Person person = new Person();
person.setFirstname("Dave");
person.setCity("Seattle");
Iterable<Person> davesFromSeattle = personRepository.findAll(Example.of(person));

0
投票

您对batter结果集需求实体使用分页和流查询


0
投票

您只需要在实体上设置所需的属性并将其传递给方法findAll (Entity entity)

例如,如果您希望员工具有某些属性值,则在其上设置该参数并传递给查询数据库。

Employee employee = new Employee ();
employee. setAge (35);
employee. setExperience(5);

现在传递它进行查询

List <Employee> employèes = do. findAll (Employee);

-1
投票

您可以使用HashMap。之后将使用键和值来构建Statement。或者您可以使用Builder模式。您可以使用它来构建动态查询。

© www.soinside.com 2019 - 2024. All rights reserved.