Spring JPA带条件查询分页

Controller

@RequestMapping("/yderpList.do")
    @ResponseBody
    public Map list(YDERP yderp, int page, int rows, String startTime, String endTime){
        log.info("###查询接入ERP列表开始");
        Page<YDERP> result = yderpService.findAll(
            page-1, //页码, 从0开始
            rows,   //每页显示几条数据
        yderp,  //查询条件
                startTime, endTime);  //查询条件
        Map map = new HashMap();
        map.put("total",result.getTotalElements());  //总页数
        map.put("rows",result.getContent());  //返回的list
        return map;
    }

Service

@Override
    public Page<YDERP> findAll(int start, int end, final YDERP yderp, final String createDateTimeStart, final String createDateTimeEnd) {
        Pageable pageable = new PageRequest(start, end, Sort.Direction.ASC,"id");
        final Page<YDERP> page = yderpDao.findAll(new Specification<YDERP>() {
            @Override
            public Predicate toPredicate(Root<YDERP> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) {
                List<Predicate> list = new ArrayList<Predicate>();
                if(StringUtils.isNotBlank(yderp.getErpName())){
                   list.add(criteriaBuilder.like(root.get("erpName").as(String.class), "%"+yderp.getErpName()+"%"));
                }
                if(StringUtils.isNotBlank(yderp.getClientId())){
                    list.add(criteriaBuilder.equal(root.get("clientId"),yderp.getClientId()));
                }
                if(StringUtils.isNotBlank(yderp.getJoinMode())){
                    list.add(criteriaBuilder.equal(root.get("joinMode"),yderp.getJoinMode()));
                }
                if(StringUtils.isNotBlank(yderp.getStatus())){
                    list.add(criteriaBuilder.equal(root.get("status"),yderp.getStatus()));
                }
                if(StringUtils.isNotBlank(yderp.getOrgId())){
                    list.add(criteriaBuilder.equal(root.get("orgId"),yderp.getOrgId()));
                }
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
                SimpleDateFormat sdfmat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                if(createDateTimeStart!=null && createDateTimeEnd!=null){
                    try {
                        list.add(criteriaBuilder.between(root.<Date>get("createDatetime"),
                                sdfmat.parse(sdfmat.format(sdf.parse(createDateTimeStart).getTime())),
                                sdfmat.parse(sdfmat.format(sdf.parse(createDateTimeEnd).getTime() + 86400000))));
                    } catch (ParseException e) {
                        e.printStackTrace();
                    }
                }
                Predicate[] predicates = new Predicate[list.size()];
                return criteriaBuilder.and(list.toArray(predicates));
            }
        },pageable);
        return page;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值