如何使用具有不同参数的 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));
我想展示 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));