使用多个可选参数在H2数据库中实现搜索查询

时间:2018-07-18 08:31:48

标签: database rest spring-boot h2 spring-restcontroller

的新手
  

Spring Boot和H2数据库

。我必须编写具有搜索功能的rest控制器。 要搜索,有多个可选属性作为搜索参数。 我应该如何设计端点以及应该如何设计查询。搜索参数有5个,我不能对搜索查询拥有所有排列和组合吗? 同样,搜索参数的所有组合都不能有终点。 我应该如何设计我的解决方案?预先感谢

2 个答案:

答案 0 :(得分:0)

您的端点应接受这些参数(即作为查询字符串)。您将必须动态构建查询。

您可以使用QueryDSL,查看文档。

这是我的项目中的一个片段,其中两个参数是可选的:

QBkAddress bkAddress = QBkAddress.bkAddress;
BooleanBuilder where = new BooleanBuilder();
if(bkOrganizationId != null) {
    where.and(bkAddress.bkOrganization.id.eq(bkOrganizationId));
}
if(bkCityId != null) {
    where.and(bkAddress.bkCity.id.eq(bkCityId));
}
Iterable<BkAddress> iterable = bkAddressRepository.findAll(where);

答案 1 :(得分:0)

您可以使用spring-data提供的Example进行可选搜索查询。这是一个例子,

 Class User{
    String firstName;
    String lastName;
    String id;
  }

  Class UserService{
     // All are optional
     List<User> findBy(String firstName, String lastName, String id){
        User u = new User();
        u.setFirstName(firstName);
        u.setLastName(lastName);
        u.setId(id);

        userRepository.findAll(Example.of(user));
        // userRepository is a JpaRepository class
     }
  }