java - 如何在 Spring Boot 中按日期列获取数据或记录?
问题描述
实际上,我有包含列的订单实体(表),我想根据 createddatetime 列过滤订单数据。基本场景是,当用户选择任何日期时,例如:createddate 是 03-06-2021,并且该日期存在 3-4 条记录,因此它将能够显示 mysql 数据库中该日期存在的总记录。
@Builder.Default
@Column(updatable=false)
@JsonFormat(shape=JsonFormat.Shape.STRING,pattern="yyyy-MM-dd hh:mm:ss")
private Date createddatetime=new Date();
我在 Orders JPA 存储库中创建了这样的函数:
List<Orders> findByCreateddatetimeOrderByCreateddatetimeDesc(Date createddate);
下面是我的 API 控制器代码,用于获取特定日期的记录。但是在点击这个时,我没有得到任何响应(错误响应)。
@RequestMapping(value = AkApiUrl.onedayorder, method = { RequestMethod.POST, RequestMethod.GET }, produces = {MediaType.APPLICATION_JSON_VALUE })
public ResponseEntity<?> onedayorder(HttpServletRequest request, @RequestParam("limit") int limit, @RequestParam("createddate") String createddate ) {
CustomResponse = ResponseFactory.getResponse(request);
int min = limit - 1;
int max = Constants.limitResult;
try {
List<Orders> order = null;
List<Orders> totalorders = null;
Pageable pageable = new PageRequest(min, max, Sort.Direction.ASC, "orderid");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date onedayorder = sdf.parse(createddate);
if(createddate != null && createddate != "") {
order = ordersdao.findByCreateddatetimeOrderByCreateddatetimeDesc(onedayorder, pageable);
totalorders = ordersdao.findByCreateddatetimeOrderByCreateddatetimeDesc(onedayorder);
}else {
order = ordersdao.findAllByStatus(1, pageable);
totalorders = ordersdao.findAllByStatus(1);
}
if (order != null) {
CustomResponse.setResponse(order);
CustomResponse.setMaxlimit(Constants.limitResult);
CustomResponse.setTotalorders(totalorders.size());
CustomResponse.setStatus(CustomStatus.OK);
CustomResponse.setStatusCode(CustomStatus.OK_CODE);
}
} catch (Exception e) {
e.printStackTrace();
CustomResponse.setResponse(null);
CustomResponse.setStatus(CustomStatus.Error);
CustomResponse.setStatusCode(CustomStatus.Error_CODE);
}
return new ResponseEntity<ResponseDao>(CustomResponse, HttpStatus.OK);
}
我尝试@Query 使用 like 运算符创建自定义查询,但再次遇到类型不匹配错误。我该如何解决这个问题?任何建议都会很有价值。
解决方案
在您的数据库中,日期模式是“yyyy-MM-dd hh:mm:ss”,因此请执行如下范围查询:
List<Orders> findByCreateddatetimeBetweenOrderByCreateddatetimeDesc(Date createddateBegin, Date createddateEnd);
并给一天,你想从午夜到午夜。
推荐阅读
- go - 如何在 Golang 中使用下划线解析时间戳
- python - Python 装饰器;TypeError:“NoneType”对象不可调用
- c++ - 重载相同操作的友元函数和类方法的优先级
- android - 你如何判断是用户发起了 onTaskRemoved 还是系统发起了?
- r - 使用ggplot2将平均值添加到R中的分组箱形图
- javascript - 为 onclick 方法创建一个布尔标志
- python - 对 3d numpy 中的行求和
- android - (Kotlin) 如何在不影响数据的情况下初始化HashMap
- c - C - 如果超过 1 或
- swift - 如何将accessibilityIdentifier 添加到UIAlertController 中的textField