Java 日期之间的默认值

Java 日期之间的默认值,java,spring,jpa,spring-data-jpa,Java,Spring,Jpa,Spring Data Jpa,如果我没有指定任何日期,我希望返回所有预订 我有一个使用RequestParam的控制器: public List<resrvation> getAll(@RequestParam(name = "date1",required = false)) String date1,@RequestParam(name = "date2",required = false)) String date2){ return resrvationSe

如果我没有指定任何日期,我希望返回所有预订

我有一个使用
RequestParam
的控制器:

public List<resrvation> getAll(@RequestParam(name = "date1",required = false)) String date1,@RequestParam(name = "date2",required = false)) String date2){
    return resrvationService.getAll( date1,date2);
}
public List getAll(@RequestParam(name=“date1”,required=false))字符串date1,@RequestParam(name=“date2”,required=false))字符串date2){
返回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);
}
Query(“从保留中选择不同的r,其中r.dateRv介于:date1和:date2之间”)
公共列表getAll(@Param(“date1”)date1、@Param(“date2”)date2);
}

如果希望在date为null时返回所有数据,则可以执行以下操作:
选择与预订不同的r,其中
(:date1为null或r.dateRv>=trunc(:date1))和

(:date2为null或r.dateRv保持简单,创建两个方法:

public List<Reservation> getAll():
public List<Reservation> getAll(Date, Date):
public List getAll():
公共列表getAll(日期,日期):
在控制器中,根据收到的参数,调用其中一个。下面是一个简单的示例:

public List<reservation> 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);
}
公共列表getAll(
@RequestParam(name=“date1”,required=false)字符串date1,
@RequestParam(name=“date2”,required=false)字符串date2){
返回(date1==null&&date2==null)?
reservationService.getAll():
getAll(日期1,日期2);
}

在不知道应用程序技术堆栈是什么的情况下,很难回答您的问题。如果您使用的是Java8,您还可以使用可选的请求参数。还可以尝试在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();
}
public List getAll(@RequestParam(name=“date1”,required=false))可选开始日期,@RequestParam(name=“date2”,required=false))可选日期2){
if(date1.isPresent()和&date2.isPresent()){
返回reservationService.FindAllBetween StartDate和EndDate(date1.get(),date2.get());
}否则{
返回reservationService.findAll();
}
}

以及在存储库上

List<Reservation> findAll();
List<Reservation> findByDateBetween(Date startDate, Date endDate);
List findAll();
列表findByDateBetween(日期开始日期、日期结束日期);

将此逻辑放入您的服务中,然后执行例如a
findAll()
我没有理解您?如果您没有收到日期,请使用其他方法获取所有值。类似于:
返回日期==null?reservationService.getAll()。reservationService.getAll(date)
我遇到此异常,无法将类型为“java.lang.String”的值转换为所需的类型“java.util.date”,date1和date2的数据类型是date还是String?date1和date2应具有日期数据类型pass param,如@param(“date1”)@Temporal(TemporalType.Date)信息类中的date1和date1将如下所示。。私人日期日期1;同样的事情:/I我假设您的存储库是jpa存储库,即spring data jpa,请参阅此处的文档。如果您不使用jpa存储库,那么您可以编写自己的DAO方法来获取日期之间的数据或从数据库中获取所有保留记录