• 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));
        }

    传入参数

    结果

  • 相关阅读:
    小白学docker(1)---docker安装
    反射与动态代理
    SpringBoot源码分析(1)—启动类
    maven中的groupId和artifactld到底指的什么?
    SpringBoot配置文件加载顺序
    HashMap和ConcurrentHashMap
    架构设计:系统间通信(4)——IO通信模型和JAVA实践 中篇
    架构设计:系统间通信(3)——IO通信模型和JAVA实践 上篇
    架构设计:系统间通信(2)——概述从“聊天”开始下篇
    idea选择指定版本进行安装
  • 原文地址:https://www.cnblogs.com/sweetchildomine/p/9158806.html
Copyright © 2020-2023  润新知