我希望当我不指定任何返回所有预订的日期时 我有一个控制器,使用RequestParam。喜欢这个
public List<resrvation> getAll(@RequestParam(name = "date1",required = false)) String date1,@RequestParam(name = "date2",required = false)) String date2){
return resrvationService.getAll( date1,date2);
}
我的道
Query("select DISTINCT r from reservation where r.dateRv between :date1 and :date2")
public List<Reservation> getAll(@Param("date1") Date date1, @Param("date2") Date date2);
}
答案 0 :(得分:0)
如果你想在date为null时返回所有数据,那么你可以这样做:
从预订中选择DISTINCT r
(:date1为null或r.dateRv&gt; = trunc(:date1))和
(:date2为null或r.dateRv&lt; = trunc(:date2))
使用截断功能
答案 1 :(得分:0)
保持简单,创建两种方法:
public List<Reservation> getAll():
public List<Reservation> getAll(Date, Date):
在控制器中,根据您收到的参数,调用其中一个。这是一个简单的例子:
public List<resrvation> getAll(@RequestParam(name = "date1",required = false)) String date1,@RequestParam(name = "date2",required = false)) String date2){
return date1 == null && date2 == null ?
reservationService.getAll() :
reservationService.getAll(date1, date2)
}
答案 2 :(得分:0)
在不知道您的应用技术堆栈是什么的情况下,很难回答您的问题。如果您使用的是Java8,则还可以使用optional作为请求参数。还尝试在JPA存储库中使用spring-data-jpa派生查询来获得所需内容。
public List<resrvation> getAll(@RequestParam(name = "date1",required = false)) Optional<String> startDate,@RequestParam(name = "date2",required = false)) Optional<String> date2){
if(date1.isPresent() && date2.isPresent()) {
return reservationService.findAllBetweenStartDateAndEndDate( date1.get(),date2.get());
} else {
return reservationService.findAll();
}
}
并且在存储库
List<Reservation> findAll();
List<Reservation> findByDateBetween(Date startDate, Date endDate);