栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java知识点:Specification实现分页动态查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java知识点:Specification实现分页动态查询

目录

1. 什么是Specification接口?

2. Specification接口中定义的方法

3. 方法名称和SQL对应关系

4. Specification使用示例

4.1 首先,对应的Repository需要实现JpaSpecificationExecutor接口

4.2 然后,在业务类service中,分页查询的方法如下


1. 什么是Specification接口?

Spring Data JPA中可以通过JpaSpecificationExecutor接口实现动态/分页查询。

而JpaSpecificationExecutor是围绕着Specification接口来定义的。

可理解为:Specification构造的就是查询条件。

2. Specification接口中定义的方法

该接口中只定义了一个方法:

//构造查询条件

public Predicate toPredicate(Root root, CriteriaQuery query, CriteriaBuilder cb);

3. 方法名称和SQL对应关系

 

4. Specification使用示例

4.1 首先,对应的Repository需要实现JpaSpecificationExecutor接口

 

4.2 然后,在业务类service中,分页查询的方法如下
public Page findPerfCases(PagingQueryPerfCaseDto paging){
        //分页查询的因素:perfCaseName, current, pageSize
        String perfCaseName = paging.getPerfCaseName();
        Integer current = paging.getCurrent();
        Integer pageSize = paging.getPageSize();

        //查询条件. 添加先关的查询条件,类似于where后面的语句
        //写法一
        Specification specification = (root, criteriaQuery, criteriaBuilder) -> {
            List predicateList = new ArrayList<>();
            if(perfCaseName != null && !"".equals(perfCaseName.trim())){
                predicateList.add(criteriaBuilder.like(root.get("perfCaseName"), "%"+perfCaseName+"%"));
            }
            predicateList.add(criteriaBuilder.equal(root.get("isDelete"), 0));
            return criteriaBuilder.and(predicateList.toArray(new Predicate[predicateList.size()]));
        };

         

        //排序
        Sort.Order order = new Sort.Order(Sort.Direction.DESC, "updateTime");
        Sort sort = Sort.by(order);

        //分页
        
        Pageable pageable = PageRequest.of(current-1, pageSize, sort);

        //分页查询
         
        Page perfCases = perfCaseRepo.findAll(specification, pageable);

        return perfCases;
    }

解析:

(1)

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/770364.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号