![](/img/trans.png)
[英]How to handle the SQLIntegrityConstraintViolationException in Spring Boot?
[英]how to use spring boot to handle different search?
在spring boot中使用spring data jpa創建搜索功能的最佳實踐是什么?
@GetMapping("/search")
public List<Hotel> getAllByCriteria(@RequestParam MultiValueMap<String, String> criteria) {
if (criteria.containsKey("cityPublicId")) {
String cityPublicId = criteria.getFirst("cityPublicId");
if (criteria.containsKey("amenity")) {
List<String> amenities = criteria.get("amenity");
return svc.findAllByCityAndAmenities(cityPublicId, amenities);
}
return svc.findAllByCity(cityPublicId);
}
//currently only support one amenity filtration
else if (criteria.containsKey("amenity")) {
return svc.findAllByAmenities(criteria.get("amenity"));
}
return null;
}
當前,我必須確定所有可能的准則組合才能使用相應的方法,是否存在通用的方式來處理所有情況? 或至少不對所有可能的組合進行硬編碼。
PS:如果我想按多種便利條件過濾結果,是否可以使用findByAmenitiesContains(set)? 酒店實體具有一套便利設施的地方。 我必須使用@query創建自定義查詢嗎?
謝謝。
事后,您可以使用不同的請求有效負載實體來處理同一終結點
@GetMapping(path = "/search", params = { "cityId" })
public List<Hotel> getAllByCriteria(ByCityPublicId byCity) {
return svc.findAllByCity(byCity.getCityPublicId())
}
@GetMapping(path = "/search", params = { "cityId", "amenity" })
public List<Hotel> getAllByCriteria(ByCityPublicIdAndAmenity byCityAndAmenitities) {
return svc.findAllByCityAndAmenities(byCityAndAmenitities.getCityPublicId(), byCityAndAmenitities.getAmenitities())
}
@GetMapping(path = "/search", params = { "amenity" })
public List<Hotel> getAllByCriteria(ByAmenity byAmenity) {
return svc.findAllByAmenities(byAmenity.getAmenity());
}
您基本上有以下選擇:
關於PS: 查詢推導的功能已被詳細記錄 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.