精华内容
下载资源
问答
  • @Test void findAll() throws Exception { /*List<String> list = new ArrayList<>(); list.add("productId"); Sort sort = new Sort(Direction....// PageRequest request = new PageRequest(0, 2...

     

    @Test
        void findAll() throws Exception {
    //        PageRequest request = new PageRequest(0, 2);
    
            Pageable pageable = PageRequest.of
                    (0, 2, Sort.Direction.DESC, "ProductId");
            Page<ProductInfo> all = productService.findAll(pageable);
            System.out.println(all);
        }

     

     

     

     

     

     

    展开全文
  • SpringBoot 中 Jpa PageRequest 分页 + Example 多参数 单表查询 依赖 <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-data-jpaartifactId> dependency> <dependency> ...

    SpringBoot 中 Jpa PageRequest 分页 + Example 多参数 单表查询

    依赖

    
       <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-jpa</artifactId>
            </dependency>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>6.0.6</version>
            </dependency>
    
    
    

    配置

    spring:
      #通用的数据源配置
      datasource:
        driverClassName: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/main?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
        username: root
        password: root
      jpa:
        #这个参数是在建表的时候,将默认的存储引擎切换为 InnoDB 用的
        database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
        #配置在日志中打印出执行的 SQL 语句信息。
        show-sql: true
        hibernate:
          #配置指明在程序启动的时候要删除并且创建实体类对应的表
          # 第一次简表  create  后面用  update 不然每次重启工程会删除表并新建。
    #      ddl-auto: create
          ddl-auto: update
          naming:
           implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
           physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
    
    
    

    pojo

    
    @Data
    @Entity(name = "circuitConfig")
    public class CircuitConfig {
    
        @Id
        @GeneratedValue(strategy = GenerationType.AUTO) //主键自动增长
        public int id;
        @NotEmpty(message = "cjrId 不能为空")
        @Column(length = 200)
        public String cjrId;
        @NotEmpty(message = "syrId 不能为空")
        @Column(length = 200)
        public String syrId;
        @NotEmpty(message = "url 不能为空")
        public String url;
        /**
         * 截取后的url
         */
        @JsonIgnore
        @Column(length = 200)
        public String suBurl;
    
    
        @NotEmpty(message = "method 不能为空")
        public String method;
        /**
         * 请求方式 字符串还是 json
         *  1 表示 请求方式是 json
         *  0 表示 请求方式是 text
         */
        @NotNull(message = "contype 不能为空")
        @Column(length = 1)
        public Integer contype;
        /**
         * 1 表示 开票流程配置
         * 0 表示 其他配置
         */
        @NotNull(message = "type 不能为空")
        @Column(length = 1)
        public Integer type;
    
        public Date cjsj;
    
    
    }
    
    
    

    dao

    
    @Repository
    public interface CircuitConfigDao  extends JpaRepository<CircuitConfig,Integer> {
    }
    
    

    使用 PageRequest 进行分页查询
    JPA中的接口

    根据参数查询信息 Example 参数查询匹配器

    可以使用 ExampleMatcher 匹配器 进行参数匹配

    ExampleMatcher:ExampleMatcher携带有关如何匹配特定字段的详细信息,相当于匹配条件。
    Example:由Probe和ExampleMatcher组成,用于查询。

    缺点

    属性不支持嵌套或者分组约束,比如这样的查询 firstname = ?0 or (firstname = ?1 and lastname = ?2)
    灵活匹配只支持字符串类型,其他类型只支持精确匹配

    创建匹配器
    在这里插入图片描述

       <S extends T> List<S> findAll(Example<S> var1);
    
        <S extends T> List<S> findAll(Example<S> var1, Sort var2);
    

    分页查询接口

    在这里插入图片描述

    封装返回结果类

    在这里插入图片描述

    分页查询 + 字符串匹配查询

    
      
        /**
         * 分页查询
         *
         * @param circuitConfig 查询条件
         * @return 流程配置数据
         */
        public ReturnMessage getListWithCriteria(PageRequestForCirVo<CircuitConfig> circuitConfig) {
            CircuitConfig object = circuitConfig.getObject();
    
            log.info("查询条件为 {}  页码 {} , 每页数量  {} ", object, circuitConfig.getPage(), circuitConfig.getPageSize());
            if (circuitConfig.getPage() < 1) {
                circuitConfig.setPage(1);
            }
            if (circuitConfig.getPageSize() < 1) {
                circuitConfig.setPageSize(10);
            }
    
            //ExampleMatcher.GenericPropertyMatchers.startsWith()  模糊查询匹配开头,即{username}%
            //ExampleMatcher.GenericPropertyMatchers.contains())  全部模糊查询,即%{address}%
            //ExampleMatcher.GenericPropertyMatchers.contains()  全部模糊查询,即%{address}%
    
            Example<CircuitConfig> example = null;
            Pageable pageable = null;
            Page<CircuitConfig> listWithCriteria = null;
            if (object != null) {
    
                //查询条件
                ExampleMatcher matcher = ExampleMatcher.matching()
                        .withMatcher("contype", ExampleMatcher.GenericPropertyMatchers.contains())
                        .withMatcher("type", ExampleMatcher.GenericPropertyMatchers.contains())
                        .withMatcher("cjrId", ExampleMatcher.GenericPropertyMatchers.contains())
                        .withMatcher("syrId", ExampleMatcher.GenericPropertyMatchers.contains())
                        .withMatcher("url", ExampleMatcher.GenericPropertyMatchers.contains())
                        .withMatcher("suBurl", ExampleMatcher.GenericPropertyMatchers.contains())
                        .withMatcher("method", ExampleMatcher.GenericPropertyMatchers.contains())
                        //忽略字段,即不管password是什么值都不加入查询条件
                        .withIgnorePaths("cjsj")
                        /*.withIgnorePaths("contype")
                        .withIgnorePaths("type")*/
                        //,需要忽略掉
                        .withIgnorePaths("id");
                example = Example.of(object, matcher);
    
                //分页数据
                pageable = new PageRequest(circuitConfig.getPage() - 1, circuitConfig.getPageSize(), Sort.DEFAULT_DIRECTION, "id");
                //查询
                listWithCriteria = circuitConfigDao.findAll(example, pageable);
    
            } else {
                pageable = new PageRequest(circuitConfig.getPage() - 1, 10, Sort.Direction.ASC, "id");
                listWithCriteria = circuitConfigDao.findAll(pageable);
    
            }
    
            List<CircuitConfig> content = listWithCriteria.getContent();
            //返回空
            if (content == null || content.size() == 0) {
                log.info(" 暂无数据 ");
                return new ReturnMessage(CodeMsgEnum.NOT_DATA.getCode(), CodeMsgEnum.NOT_DATA.getMsg());
            }
            //查询总数
       long total = mongoTemplate.count(query,CircuitConfig.class);
      
    
            //包装返回结果
            PageImpl<CircuitConfig> emptyPage = new PageImpl<>(content, pageable, total);
            log.info(" 返回结果为 : {} ",JSON.toJSONString(emptyPage));
            return new ReturnMessage(CodeMsgEnum.OK.getCode(), CodeMsgEnum.OK.getMsg(), emptyPage);
        }
    
    
    

    返回结果

    
    {
        "code": 0,
        "msg": "成功",
        "data": {
            "content": [
                {
                    "id": 1,
                    "cjrId": "1",
                    "syrId": "12",
                    "url": "http://127.0.0.1:8080/api/template/xx",
                    "method": "12",
                    "contype": 1,
                    "type": 1,
                    "cjsj": "2020-03-10 08:00:00"
                },
                {
                    "id": 2,
                    "cjrId": "1",
                    "syrId": "12",
                    "url": "http://127.0.0.1:8080/api/template/xxxx",
                    "method": "12",
                    "contype": 1,
                    "type": 1,
                    "cjsj": "2020-03-10 08:00:00"
                }
            ],
            "last": true, 
            "totalPages": 1,
            "totalElements": 2,
            "number": 0,
            "size": 6,  // pageSize
            "sort": [
                {
                    "direction": "ASC",
                    "property": "id",
                    "ignoreCase": false,
                    "nullHandling": "NATIVE",
                    "ascending": true,
                    "descending": false
                }
            ],
            "first": true,
            "numberOfElements": 2
        }
    }
    
    
    展开全文
  • 分页查询:PageRequest、PageImpl

    千次阅读 2020-03-23 22:29:17
    public interface OrderMasterRepository extends JpaRepository<OrderMaster, String>... Page<OrderMaster> findByBuyerOpenid(String buyerOpenid, Pageable pageable); } @Test public v...

    SpringbootJPA分页 PageRequest过时替代办法

    service

    //jpa分页查询
            offset = Math.max(offset, 1);
            limit = Math.max(limit, 10);
            PageRequest pageRequest = PageRequest.of(offset - 1, limit);
            Page<Books> booksPage = bookDao.findByIdAndStatus(id, "active", pageRequest);
    
            List<booksDto> booksDtoList = convert(booksDPage.getContent());
    
    public interface OrderMasterRepository extends JpaRepository<OrderMaster, String> {
    
        Page<OrderMaster> findByBuyerOpenid(String buyerOpenid, Pageable pageable);
    }
    
    

    在这里插入图片描述

    @Test
        public void findByBuyerOpenid() throws Exception {
            PageRequest request = new PageRequest(1, 10);
    
            Page<OrderMaster> result = repository.findByBuyerOpenid(OPENID, request);
    
            Assert.assertNotEquals(0, result.getTotalElements());
        }
    

    数据库的的数据
    在这里插入图片描述
    将满足条件的数据,每页10条数据分成2页,查询出来
    在这里插入图片描述

    service层

    @Override
        public Page<OrderDTO> findList(String buyerOpenid, Pageable pageable) {
            Page<OrderMaster> orderMasterPage = orderMasterRepository.findByBuyerOpenid(buyerOpenid, pageable);
    
            List<OrderDTO> orderDTOList = OrderMaster2OrderDTOConverter.convert(orderMasterPage.getContent());
    
            return new PageImpl<OrderDTO>(orderDTOList, pageable, orderMasterPage.getTotalElements());
        }
    

    PageImpl(): 有三个参数,前两个必填,第几页,一页多少个size,第三个参数默认可以不填

    展开全文
  • 分页查询(PageRequest对象)相关函数

    万次阅读 2019-03-15 11:55:54
    在执行查询方法时,可以传入一个PageRequest对象,代表进行分页查询。 PageRequest对象代表了查询的条件和约束,通常包含当前页数,每页几条数据。 也可以在分页查询时指定Direction或Sort。 查询的结果为Page&...
  • 用spring data写分页查询,在前后端分离时遇到的问题查询方法:传入Pagable对象,返回一个Page对象 public Page<BookInfo> query(BookCandition bookCandition, Pageable pageable) { }原因传入Pagable对象通过RPC传...
  • 在执行查询方法时,可以传入一个PageRequest对象,代表进行分页查询。 PageRequest对象代表了查询的条件和约束,通常包含当前页数,每页几条数据。 也可以在分页查询时指定Direction或Sort。 查询的结果为Page&...
  • 项目中通过openid来查买家订单主表,那么多的话就的考虑分页显示了public interface OrderMasterRepository extends JpaRepository&lt;OrderMaster, String&... Page&lt;OrderMaster&gt; findByB...
  • page = productRepository.findAll(PageRequest.of(2, 5)); // 第一个参数如果是1的话,查到的是第二页的数据 model.addAttribute("page", page); 页面代码如下:(需要引入jquery和bootstrap) <nav aria-...
  • 【Springboot】关于SpringbootJPA分页 PageRequest过时的办法 看了网上很多博客,都是在用 new PageRequest的方法创建Pageable对象。可是估计很多同学写了之后才发现原来这个方法作者已经标记为过时了; 替代的方法...
  • Spring Boot JPA分页 PageRequest.of代替过时的PageRequest方法 该篇博客记录了关于Spring Data JPA之 new PageRequest遇到的问题 最近在学习Spring Data Jpa数据持久层这一块知识的时候,在编些dao接口的单元测试...
  • Springboot 分页 PageRequest过时的办法

    千次阅读 2019-01-29 14:52:15
    替代的方法是不要new PageRequest,而是直接用 PageRequest.of这个方法 根据你的需求选择入参; Pageable pageable =new PageRequest(pageNum - 1,pageLimit); 换成 Pageable pageable =PageRe...
  • SpringbootJPA分页 PageRequest过时替换方法 Pageable pageable = new PageRequest(page - 1,size); 替换成: Pageable pageable = PageRequest.of(page - 1,size);
  • 在第一篇博文中介绍了Mybatis与PageHelper插件的使用,在本文中,将会使用另一种orm来实现分页条件查询。 使用Springboot最大的好处就是减少繁琐的配置,Spring-Data-Jpa是基于hibernate框架做的,因此数据源的配置...
  • Springboot2 Jpa关于分页PageRequest.of()

    万次阅读 2018-10-25 19:24:34
    Ⅰ 公司做项目,都是使用Mybatis, 个人不太喜欢xml的方式,自然也尝试无xml的Mybatis,在之前写的一篇多数据源+Mybatis+无xml配置. 不废话,本篇记录使用JPA...写到Dao层,继承JpaRepository,实现分页时候的问题. p...
  • Spring Boot JPA PagingAndSortingRepository接口 PageRequest.of方法代替PageRequest构造方法 Sort.by 方法代替Sort构造方法
  • 分页时,需要先写查询count的语句,再写一个查询分页的语句,利用pagehelper能快速实现分页 pom中添加依赖 <!-- pagehelper --> <dependency> <groupId>com.github.pagehelper</groupId&...
  • 今天用 Pageable pageable = new PageRequest(vo.getPageNumber(), vo.getPageSize(), Sort.Direction.ASC, “id”);这个方法,提示PageRequest废弃了,看着不爽 解决办法: 新的写法不用new PageRequest,直接...
  • PageHelper.startPage分页失效 配置相关问题参考官方文档,无误 但是分页就是有的有效有的没有用 这是因为所需分页的查询没有在PageHelper.startPage方法后面的原因 以下是官方文档解释: //request: url?pageNum=1&...
  • SpringbootJPA分页 PageRequest过时替代办法 1. 原因 最近学习spring data JPA 时候要用到分页功能,但是发现网上所有教程都是通过new PageRequest()方法解决分页,实际使用中发现已经过时 2. 解决方案 替代的方法...
  • 1.关于SpringbootJPA分页 PageRequest原来的Pageable pageable =new PageRequest(page-1,size);替换成:Pageable pageable = PageRequest.of(page-1,size); 2 问题描述: org.springframework.dao....
  • PageRequest过时替代的办法 ----------------------------model类代码--------------------------------- package com.dfl.ycp3.stock.common.model; import com.fasterxml.jackson.annotation.JsonForm...
  • Page是一个泛型接口,代表查询的单页结果集,也有其他信息。常用以下方法 int getTotalPages() //返回总的页数 long getTotalElements() //返回总行数 List<T> getContent() //返回查询结果集的List ...
  • @Override @Transactional(readOnly = true) // 只读事务 public Page<People> getPage(Integer pageNum, Integer pageLimit) { Pageable pageable =new PageRequest(pageNum - 1,pageLimit); r...
  • 1. 具体业务描述:以下代码块为查一个订单列表并且按照最近时间优先先查出来 @CrossOrigin ... public ModelAndView list(@RequestParam(value = "page",defaultValue = "1") Integer page, @RequestPa...
  • Vue.js iView Page分页组件之真分页

    千次阅读 2018-03-29 09:59:39
    问题: 之前实现假分页,现在来实现简单的真分页,原理见 Mybatis Example对Oracle数据库的分页查询思路: 前端在初始化过程中,第一步先请求总的条数,然后,再请求第一页数据,然后根据点击翻页事件根据请求页码...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 64,689
精华内容 25,875
关键字:

pagerequest分页