开发者社区> 问答> 正文

spring-data-jpa分页问题

在官网没看到spring-data-jpa分页使用的栗子,所有不太会用。

Page findCourseSortByHot(Pageable pageable);

spring-data-jpa在发出sql语句时,是根据方法名中的SortByHot呢还是根据Pageable中设置的sort,发出sql语句呢?

@Query (" ")

Page findCourseSortByHot1(Pageable pageable);

使用@Query后,调用改方法时是只执行@Query后的sql语句还是配合着Pageable一起再生成语句呢?

否则这里的Pageable是如何作用的呢?

用过的各位,帮忙解答下,或是有分页栗子的给个链接参考下,多谢啦

展开
收起
a123456678 2016-03-18 10:34:06 2532 0
1 条回答
写回答
取消 提交回答
  • public Page<Projectsort> findAll(Specification<Projectsort> spec, Pageable page);
     
    Specification<Projectsort> spec = getWhere(search);
            PageRequest request = new PageRequest(num - 1, size,
                    Sort.DEFAULT_DIRECTION.DESC, "projectsortserial");
            Page<Projectsort> pageList = sortRepo.findAll(spec, request);
     
    private Specification<Projectsort> getWhere(final SortSearch search) {
            return new Specification<Projectsort>() {
     
                @Override
                public Predicate toPredicate(Root<Projectsort> root,
                        CriteriaQuery<?> query, CriteriaBuilder builder) {
                    List<Predicate> predicate = new ArrayList<Predicate>();
                    if (search.getMattertype() != null) {
                        predicate.add(builder.equal(root.get("mattertype"),
                                search.getMattertype()));
                    }
                    if (search.getSerial() != null) {
                        predicate.add(builder.equal(root.get("projectsortserial"),
                                search.getSerial()));
                    }
                    if (search.getDepId() != null) {
                        predicate.add(builder.equal(root.get("departmentid"),
                                search.getDepId()));
                    }
                    if (search.getProjectsortname() != null) {
                        predicate.add(builder.like(
                                (Path) root.get("projectsortname"),
                                "%" + search.getProjectsortname() + "%"));
                    }
                    predicate.add(builder.equal(root.get("useflag"),
                            search.getUserFlag()));
                    predicate.add(builder.equal(root.get("delflag"),
                            search.getDelFlag()));
                    Predicate[] pre = new Predicate[predicate.size()];
                    return query.where(predicate.toArray(pre)).getRestriction();
                }
            };
        }
     
     
    class SortSearch {
            private String mattertype;
            private String serial;
            private String sortName;
            private String userFlag;
            private String delFlag;
            private String depId;
            private String projectsortname;
     
            public String getProjectsortname() {
                return projectsortname;
            }
     
            public void setProjectsortname(String projectsortname) {
                this.projectsortname = projectsortname;
            }
     
            public String getDepId() {
                return depId;
            }
     
            public void setDepId(String depId) {
                this.depId = depId;
            }
     
            public String getUserFlag() {
                return userFlag;
            }
     
            public void setUserFlag(String userFlag) {
                this.userFlag = userFlag;
            }
     
            public String getDelFlag() {
                return delFlag;
            }
     
            public void setDelFlag(String delFlag) {
                this.delFlag = delFlag;
            }
     
            public String getMattertype() {
                return mattertype;
            }
     
            public void setMattertype(String mattertype) {
                this.mattertype = mattertype;
            }
     
            public String getSerial() {
                return serial;
            }
     
            public void setSerial(String serial) {
                this.serial = serial;
            }
     
            public String getSortName() {
                return sortName;
            }
     
            public void setSortName(String sortName) {
                this.sortName = sortName;
            }
     
        }
     
     
    if (pageList != null && pageList.getSize() > 0) {
                Iterator<Projectsort> it = pageList.iterator();
                while (it.hasNext()) {
                    Projectsort sort = it.next();
     
                    //获取结果集 循环操作
                    }
                }
            }
    
    2019-07-17 19:06:05
    赞同 展开评论 打赏
问答分类:
SQL
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
云栖社区特邀专家徐雷Java Spring Boot开发实战系列课程(第20讲):经典面试题与阿里等名企内部招聘求职面试技巧 立即下载
微服务架构模式与原理Spring Cloud开发实战 立即下载
阿里特邀专家徐雷Java Spring Boot开发实战系列课程(第18讲):制作Java Docker镜像与推送到DockerHub和阿里云Docker仓库 立即下载

相关实验场景

更多