JPA根据时间区间分页查询(前后端分离)

该博客记录侧重于时间区间的查询,仅展示部分代码用于学习备用。涉及数据库、控制层和service层,还提醒逻辑代码应写在service层。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本记录侧重于时间区间的查询,所以只显示部分代码,学习备用

数据库:

 @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);
    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值