MyBatis-PageHelper

 ·  ☕ 2  · 👀...

介绍

配置

配置maven

1
2
3
4
5
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.1.8</version>
</dependency>

在 MyBatis 配置 xml 中配置拦截器插件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
<plugins>
        <!-- com.github.pagehelper为PageHelper类所在包名 -->
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库-->
            <!--5.0以后自动识别数据库-->
            <!--<property name="dialect" value="mysql"/>-->
            <!-- 默认值为false,该参数对使用 RowBounds 作为分页参数时有效。 当该参数设置为true时,使用 RowBounds 分页会进行 count 查询。 -->
            <property name="rowBoundsWithCount" value="true"/>
            <!-- reasonable:value=true时,pageNum小于1会查询第一页,如果pageNum大于pageSize会查询最后一页 -->
            <property name="reasonable" value="true"/>
            <!--
                默认值为 false。设置为 true 时,允许在运行时根据多数据源自动识别对应方言的分页。
                如果你在 Spring 中配置了动态数据源,并且连接不同类型的数据库,这时你可以配置 autoRuntimeDialect 为 true
            -->
            <property name="autoRuntimeDialect" value="true"/>

            <!-- autoRuntimeDialect:默认值为 false。设置为 true 时,允许在运行时根据多数据源自动识别对应方言的分页  -->
            <property name="autoRuntimeDialect" value="true"/>
        </plugin>
    </plugins>

使用方式

方式1(推荐)

1
2
PageHelper.startPage(1, 10);
List<Country> list = countryMapper.selectIf(1);

方式2(推荐)

1
2
PageHelper.offsetPage(1, 10);
List<Country> list = countryMapper.selectIf(1);

方式3

1
2
3
//配置supportMethodsArguments=true
//在代码中直接调用:
List<Country> list = countryMapper.selectByPageNumSize(user, 1, 10);

方式4

1
2
//jdk8 lambda用法
Page<Country> page = PageHelper.startPage(1, 10).doSelectPage(()-> countryMapper.selectGroupBy());

参考


Wanglibing
Wanglibing
Engineer,Lifelong learner