本记录侧重于时间区间的查询,所以只显示部分代码,学习备用
数据库:
@Column(name = "add_time")
private Long addTime;
控制层:
其实逻辑代码应该是写在service层的~~~~~下次注意
@RestController @RequestMapping("api/order") public class ApiOrderController { @PostMapping("orderPage") @RequiresRoles("admin") public DataResponse orderPage(@RequestBody JSONObject params){ //获取前端传来的参数 int pageNum=params.getInteger("pageNum");//起始页 int limit=params.getInteger("limit"); //每页显示条数 String startTime=params.getString("startTime");// 起始时间 String endTime=params.getString("endTime");//结束时间 Map<String, String> paramMap = new HashMap<>(); paramMap.put("startTime",startTime); paramMap.put("endTime",endTime); //分页 Page<ApiOrder> page=apiOrderService.paginate(PageableTools.basicPage(pageNum-1,limit,new SortDto("DESC","addTime")),paramMap); List dataList = new ArrayList(); Map<String, Object> result = new HashMap<>(); result.put("data", page.getContent()); result.put("totalPage", page.getTotalPages()); result.put("totalSize", page.getTotalElements()); dataList.add(result); return new DataResponse(ConstantError.error_code_0,ConstantError.error_msg_0,dataList); } }
service层:
public Page<ApiOrder> paginate(Pageable pageable, Map<String, String> paramMap) {
Specification<ApiOrder> querySpeci = new Specification<ApiOrder>() {
@Override
public Predicate toPredicate(Root<ApiOrder> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
List<Predicate> predicates = Lists.newArrayList();
//看这里看这里!!!!
SimpleDateFormat sdfmat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
if (StringUtils.isNotEmpty(paramMap.get("startTime")) && StringUtils.isNotEmpty(paramMap.get("endTime"))) {
predicates.add(criteriaBuilder.between(root.get("addTime"),
sdfmat.parse(paramMap.get("startTime")).getTime(),
sdfmat.parse(paramMap.get("endTime")).getTime()));
}
} catch (ParseException e) {
e.printStackTrace();
}
return criteriaBuilder.and(predicates.toArray(new Predicate[predicates.size()]));
}
};
return apiOrderDao.findAll(querySpeci, pageable);
}