我想展示一张人的表。用户应该能够通过大多数可选的属性发送查询和过滤。
问题:对于要过滤的每个属性,我必须使用`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);
}
问题:我怎样才能做得更好(无需写原生文字
PreparedStatement
我自己)?
答案 0 :(得分:1)
Query by example允许通过将简单的过滤器标准填充到&#34;示例&#34;来创建过滤器。实体:
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));
答案 1 :(得分:0)
您使用分页和流查询电池结果集要求实体
答案 2 :(得分:0)
您只需在实体上设置所需的属性并将其传递给方法findAll (Entity entity)
例如,如果您希望员工具有某些属性值,则在其上设置该参数并传递给查询数据库。
Employee employee = new Employee ();
employee. setAge (35);
employee. setExperience(5);
现在将其传递给查询
List <Employee> employèes = do. findAll (Employee);
答案 3 :(得分:-1)
您可以使用HashMap。之后将使用键和值来构建Statement。或者您可以使用Builder模式。您可以使用它来构建动态查询。