Spring data Jpa 分页从1开始,查询方法兼容 Mybatis,分页参数兼容Jqgrid

Posted 高因咖啡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring data Jpa 分页从1开始,查询方法兼容 Mybatis,分页参数兼容Jqgrid相关的知识,希望对你有一定的参考价值。

废话少说

有参数可以设置

在org.springframework.boot.autoconfigure.data.web.SpringDataWebProperties 中

        /**
         * Whether to expose and assume 1-based page number indexes. Defaults to "false",
         * meaning a page number of 0 in the request equals the first page.
         */
        private boolean oneIndexedParameters = false;

所以在application.yml中

spring:
  data:
    web:
      pageable:
        default-page-size: 20
        size-parameter: rows
        one-indexed-parameters: true

 

兼容Mybatis 分页查询

    /**
    * laizhenwei
    * @param OrderPage
    * @return org.springframework.data.domain.Page<Order>
    */     
    @Override
    public Page<Order> page(OrderPage OrderPage){
        return this.readPage( OrderPage.getPageable(), OrderPage);
    }

    /**
    * laizhenwei
    * @param pageable
    * @param OrderPage
    * @return org.springframework.data.domain.Page<Order>
    */ 
    @Override
    public Page<Order> readPage(Pageable pageable, @Nullable OrderPage OrderPage) {
        return  PageableExecutionUtils.getPage(getMapper().page(OrderPage), pageable, () -> getMapper().pageCount(OrderPage));
    }

 

mybatis pageCount方法

      <!-- 条件分页查询,数据 -->
    <select id="pageCount" resultType="long" parameterType="OrderPage">
        SELECT COUNT(o.id) FROM `order` o LEFT JOIN `user` u ON o.`user_id` = u.`id`
        <trim prefix="where" prefixOverrides="and|or">
            <if test="status!=null">
                AND o.status = #{status}
            </if>
            <if test="billStatus!=null">
                AND o.bill_status=#{billStatus}
            </if>
            <if test="type!=null">
                AND o.type =#{OrderPage.type}
            </if>

            <if test="realName!=null">
                AND u.real_name LIKE CONCAT(\'%\',#{realName},\'%\')
            </if>
            <if test="origin!=null and origin!=\'\'">
                AND o.origin LIKE  CONCAT(\'%\',#{origin},\'%\')
            </if>
            <if test="destination!=null and destination!=\'\'">
                AND o.destination LIKE CONCAT(\'%\',#{destination},\'%\')
            </if>
        </trim>
    </select>

controller

     @RequestMapping(path = "/page",method = RequestMethod.POST,consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE,produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
    public ResponseVo<Page<Order>> page(@PageableDefault Pageable pageable, @ModelAttribute OrderPage orderPage){
        ResponseVo<Page<Order>> responseVo = ResponseVo.success();
        orderPage.setPageable(pageable);
        return responseVo.setData(orderService.page(orderPage));
    }

传入参数

结果

 

以上是关于Spring data Jpa 分页从1开始,查询方法兼容 Mybatis,分页参数兼容Jqgrid的主要内容,如果未能解决你的问题,请参考以下文章

spring data jpa 分页查询

spring data jpa Specification 复杂查询+分页查询

Spring Data 系列学习Spring Data JPA 自定义查询,分页,排序,条件查询

在Spring Boot中使用Spring-data-jpa实现分页查询(转)

Spring Data JPA中带条件的分页查询

Spring Data 系列学习Spring Data JPA 自定义查询,分页,排序,条件查询