zoukankan      html  css  js  c++  java
  • SpringData学习04

    滴水穿石

    之前的 Repository 的分页不支持传参,怎么破? ...实现 JpaSpecificationExecutor<T> 接口

     service 层

      /**
         * Specification<T> : 封装了 JPA Criteria 查询的查询条件
         * Pageable : 封装了请求分页的信息
         * */
        public Page<Person> findByJpaSpecificationExecutor(Specification<Person> spec,Pageable pageable){
            return pRepository.findAll(spec, pageable);
        }

    单元测试

    /**
         * 实现带查询条件的分页
         * */
        @Test
        public void testJpaSpecificationExecutor(){
            int page = 3 - 1;
            int size = 5;
            PageRequest pageable = new PageRequest(page, size);
            
            Specification<Person> spec = new Specification<Person>() {
                /**
                 * *root : 代表查询的实体类
                 * query : 从中可得到Root对象,即告知JPA Criteria 查询要查询哪一个实体类
                 *             还可以用来添加查询条件,
                 *             还可以结合EntityManager 对象得到最终查询的 TypedQuery 对象
                 * *cb : CriteriaBuilder对象,用于创建 Criteria相关对象的工厂,当然可以从中获取Predicate对象
                 * *Predicate : 代表一个查询条件
                 * */
                @Override
                public Predicate toPredicate(Root<Person> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
                    Path path = root.get("id");
                    Predicate predicate = cb.gt(path, 5);
                    return predicate;
                }
                
            };
            
            Page<Person> plist = pService.findByJpaSpecificationExecutor(spec, pageable);
            
            System.out.println("总条数: " + plist.getTotalElements());
            System.out.println("总页数: " + plist.getTotalPages());
            System.out.println("当前页数: " + (plist.getNumber()+1));
            System.out.println("当前页面记录数: " + plist.getNumberOfElements());
            System.out.println("当前页面List: " + plist.getContent());
        }
        

    测试结果

    当前页数 为  21 , "xxx" + 2 + 1 ; 不能忽略呀 要写成 “xxxx” + (2+1) 哦

    这个方式工作中肯定是不科学的,需要构建一个通用的Base类。

    自定义方法

    —————————————————————————————————————————————————————————————————————————

    无论如何,心平气和

  • 相关阅读:
    HTML页面空格记录&nbsp;&ensp; &emsp; (小计)
    JS对象、构造器函数和原型对象之间的关系
    情人节,送女友一桶代码可否?
    JavaScript中的BOM和DOM
    js中字符替换函数String.replace()使用技巧
    XML DOM 节点类型(Node Types)
    node 基础
    npm脚本命令npm run script的使用
    Node.js学习笔记六,获取get/post请求的参数
    querystring模块详解
  • 原文地址:https://www.cnblogs.com/cfb513142804/p/7234397.html
Copyright © 2011-2022 走看看