spring jpa 动态查询

@GetMapping(value = "请求地址", method = {RequestMethod.GET})
    public Page<对象> findDublAll(
            	Pageable pageable
            , @RequestParam(value = "参数1", required = false) String 参数1
            , @RequestParam(value = "参数2", required = false) String 参数2
        ) {
        Specification<对象> sc = 对象Specs.conjunction();
        if (BasicUtil.str(参数1).length() > 0) {
            sc = sc.and(DebtSpecs.eq字段(参数1));
        }
        if (BasicUtil.str(参数2).length() > 0) {
            sc = sc.and(DebtSpecs.like字段(参数2));
        }
		
		// 排序
        Sort.Order[] orders = new Sort.Order[]{
                new Sort.Order(Sort.Direction.DESC, "排序字段")
        };
        return 对象Repo().findAll(sc, new PageRequest(pageable.getPageNumber(), pageable.getPageSize(), new Sort(orders)));
    }

public class 对象Specs {

    public static Specification<对象> conjunction(){
        return (Specification<对象>) (root, query, criteriaBuilder) -> {
            return criteriaBuilder.conjunction();
        };
    }
    public static Specification<对象> eq字段(BigDecimal 参数1){
        return (Specification<对象>) (root, query, criteriaBuilder) -> {
            return criteriaBuilder.equal( root.get( "gbLoanMy" ), 参数1 );
        };
    }

    public static Specification<对象> like字段(String 参数2) {
        return (Specification<对象>) (root, query, criteriaBuilder) -> {
            return criteriaBuilder.like(root.get("参数2"), "%" + 参数2 + "%");
        };
    }


}


版权声明:本文为weixin_39144798原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。