写一个点餐项目后台查看订单的时候要求要根据时间范围查询订单,前端是GetMapping传输,传过来的字符串参数是这样的
后端接受的时候,我一开始使用LocalDateTime接收总会400错误,前端参数不能到达后端
经过一番查询,我决定使用String类型接收参数,然后做一个字符串到LocalDateTime的类型转换,这样就可以了,以下是业务层的代码
public Page<Orders> backPage(int page,int pageSize, String number, String beginTime,String endTime) {
Page<Orders> ordersPage = new Page<>(page,pageSize);
LambdaQueryWrapper<Orders> queryWrapper = new LambdaQueryWrapper<>();
//过滤条件
queryWrapper.eq(number != null,Orders::getNumber,number);
DateTimeFormatter df = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime begin = null;
LocalDateTime end = null;
if (beginTime != null && endTime != null){
begin = LocalDateTime.parse(beginTime,df);
end = LocalDateTime.parse(endTime,df);
}
queryWrapper.between(beginTime != null && endTime != null,Orders::getOrderTime,begin,end);
queryWrapper.orderByDesc(Orders::getOrderTime);
ordersService.page(ordersPage,queryWrapper);
return ordersPage;
}
这里要注意的是,确定好LocalDateTime的格式,不然会发生DateTimeException异常