是
的新手Spring Boot和H2数据库
。我必须编写具有搜索功能的rest控制器。 要搜索,有多个可选属性作为搜索参数。 我应该如何设计端点以及应该如何设计查询。搜索参数有5个,我不能对搜索查询拥有所有排列和组合吗? 同样,搜索参数的所有组合都不能有终点。 我应该如何设计我的解决方案?预先感谢
答案 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
}
}