mybatis-PageHelper的使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhaozhirongfree1111/article/details/84955858

在使用pageHelper的时候,我遇到了点问题,最后发现是因为mybatis的版本和pageHelper的版本不对称的问题造成的,所以在此做笔记记录下来,我最后采用的版本如下:

  • pom依赖
   <mybatis.version>3.4.6</mybatis.version>
   <pagehelper.version>5.1.4</pagehelper.version>
   <mybatis.spring.version>1.3.2</mybatis.spring.version>

    <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>${mybatis.spring.version}</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>${pagehelper.version}</version>
        </dependency>
  • 如何配置分页插件呢,有两种方式,一种是作为mybatis的插件配置,另一种是作为spring的拦截器配置,说明如下:
    (1)mybatis的插件配置
<plugins>
    <!-- com.github.pagehelper为PageHelper类所在包名 -->
    <plugin interceptor="com.github.pagehelper.PageInterceptor">
        <!-- 使用下面的方式配置参数,后面会有所有的参数介绍 -->
          <property name="properties">
                        <value>
                            reasonable=true
                        </value>
                    </property>
	</plugin>
</plugins>

(2)在 Spring 配置文件中配置拦截器插件

 <!-- 创建SqlSessionFactory,同时指定数据源 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>
        <!-- 配置分页插件 -->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <value>
                            reasonable=true
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>
  • 使用方式如下:
public JsonResp findPage(Integer pageNum, Integer pageSize){
        logger.debug("find page sample by pageNum={},pageSize={}",pageNum,pageSize);
        JsonResp resp = new JsonResp();
        if (pageNum == null) {
            resp.setRespInfo(JsonResp.FAIL, "pageNum can not be null");
            return resp;
        }
        if (pageSize == null) {
            resp.setRespInfo(JsonResp.FAIL, "pageSize can not be null");
            return resp;
        }
        try {
            //关键之处:只会对紧跟着的查询做分页处理,如果有两次分页,则还需调用一次
            PageHelper.startPage(pageNum,pageSize);
            //startPage后紧跟的这个查询就是分页查询
            Map<String,Object> params = new HashMap();
            //查询所有数据
            List<Sample> sampleList = sampleService.getAll(params);
            PageInfo pageInfo = new PageInfo<>(sampleList,pageSize);
            resp.setCode(JsonResp.SUCCESS);
            resp.setResult(pageInfo);
        }catch (Exception e){
            logger.error(e.getMessage(),e);
            resp.setRespInfo(JsonResp.FAIL, e.getMessage());
        }
        return resp;
    }

猜你喜欢

转载自blog.csdn.net/zhaozhirongfree1111/article/details/84955858