Mybatis分页插件Pagehelper的使用

PageHelper是一款好用的开源免费的Mybatis第三方物理分页插件。

在pom文件正确引入pagehelper-spring-boot-starter

<!-- Pagehelper分页插件-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.12</version>
</dependency>

注意:不能再引入pagehelper,这样会导致分页插件不起作用,除非在mybatisConfig.xml文件中再加入配置:

<!-- mybatis分页-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.4</version>
</dependency>
<!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 -->
<bean id="sqlSessionFactory"
      class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <!-- 自动扫描mapping.xml文件 -->
    <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
    <property name="typeAliasesPackage" value="com.xxx.xxx.common.model"></property>
    <property name="plugins">
        <array>
            <bean class="com.github.pagehelper.PageInterceptor">
                <!-- 这里的几个配置主要演示如何使用,如果不理解,一定要去掉下面的配置 -->
                <property name="properties">
                    <value>
                        helperDialect=oracle
                        reasonable=true
                        supportMethodsArguments=true
                        params=count=countSql
                        autoRuntimeDialect=true
                    </value>
                </property>
            </bean>
        </array>
    </property>
    <!-- 配置mybatis配置文件的位置 -->
    <!--<property name="configLocation" value="classpath:mybatis-config.xml"/>-->
</bean>

配置分页插件

1)在application.yml 中配置

#mybatis 分页插件
pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

2)也可以使用代码的方式配置

@Configuration
public class PageHelperConfig {
 
    @Bean
    public PageHelper getPageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("helperDialect", "mysql");
        properties.setProperty("reasonable", "true");
        properties.setProperty("supportMethodsArguments", "true");
        properties.setProperty("params", "count=countSql");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

分页代码实现

PageHelper.startPage(page,size)方法一般要放在方法中的首行

PageHelper 只对其后的第一个查询有效

@Override
public PageInfo<User> findUserList(Integer page, Integer size) {
    // PageHelper 只对其后面的第一个查询有效
    PageHelper.startPage(page,size);
    // 执行分页查询
    List<User> list1=userMapper.selectUserList();
    // 不会执行分页查询
    List<User> list2=userMapper.selectUserList();
    // 返回结果
    PageInfo<User> pageInfo=new PageInfo<User>(list1);
    return pageInfo;
}

返回值格式:

{
    "total":34,
    "pageNum":1,
    "pageSize":10,
    "size":10,
    "startRow":1,
    "endRow":10,
    "pages":4,
    "prePage":0,
    "nextPage":2,
    "isFirstPage":true,
    "isLastPage":false,
    "hasPreviousPage":false,
    "hasNextPage":true,
    "navigatePages":8,
    "navigatepageNums":Array[4],
    "navigateFirstPage":1,
    "navigateLastPage":4,
    "list":Array[2]
}

 

posted @ 2022-04-24 08:55  残城碎梦  阅读(1448)  评论(0编辑  收藏  举报