如何使用具有不同参数的 CrudRepository?

How to use CrudRepository with variations of parameters?

我想展示 table 个人。用户应该能够发送查询并按大多数可选的属性进行过滤。

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

引入一个额外的方法
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);
}

问题:我怎样才能做得更好(不用写原生的 PreparedStatement我自己)?

你使用分页和流查询来获得更好的结果集需求实体

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

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

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

现在传递给查询

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

Query by example 允许通过将简单的过滤条件填充到 "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));