JPA简单分页条件查询

分页条件查询

Controller层

@PostMapping("getUserPage")
    public Page getUserPage(@RequestBody Map<String,Object> map){
    
    
        return userService.getUserPage(map);
    }

Service层

 public Page getUserPage(Map<String, Object> map) {
    
    
        String orderBy = "id";
        Boolean isAsc = true;
        Boolean isDel=null;
        int pages = Integer.valueOf(map.get("pages").toString());
        map.remove("pages");
        int size = Integer.valueOf(map.get("size").toString());
        map.remove("size");
        if (map.get("orderBy") != null) {
    
    
            orderBy = (String) map.get("orderBy");
            map.remove("orderBy");
        }
        if (map.get("isAsc") != null) {
    
    
            isAsc = (Boolean) map.get("isAsc");
            map.remove("isAsc");
        }
        if (map.get("isDel") != null) {
    
    
            isDel = (Boolean) map.get("isDel");
            map.remove("isDel");
        }
        Boolean finalIsDel = isDel;
        Specification<User> spec = new Specification<User>() {
    
    
            @Override
            public Predicate toPredicate(Root<User> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder cb) {
    
    
                Predicate res = null;
                if (finalIsDel!= null) {
    
    
                    res = cb.equal(root.get("isDel"), finalIsDel);
                }
                for (String entryKey : map.keySet()) {
    
    
                    Path<Object> fuck = root.get(entryKey);
                    Predicate temp = cb.like(fuck.as(String.class), "%" + (String) map.get(entryKey) + "%");
                    if (res == null) {
    
    
                        res = temp;
                        continue;
                    }
                    res = cb.and(res, temp);
                }
                return res;
            }
        };

        Sort sort = Sort.by(Sort.Direction.ASC, orderBy);
        if (!isAsc) {
    
    
            sort = Sort.by(Sort.Direction.DESC, orderBy);
        }
        PageRequest page = PageRequest.of(pages - 1, size, sort);
        Page<User> one = userRepository.findAll(spec, page);
        System.out.println(one.getTotalElements());
        return one;
    }

建议接参写个dto,别直接map
开发一时爽,维护火葬场

猜你喜欢

转载自blog.csdn.net/qq_42026590/article/details/108449228
今日推荐