# mybatis13:PageHelper插件

pageHelper官方文档 (opens new window)

# 导航

回到mybatis导航页

# 分页查询的麻烦事

  • 当前页数据查询- select * from tab limit 0,10
  • 总记录数的查询- select count(*) from tab
  • 程序计算总页数、上一页页码、下一页页码

# PageHelper使用流程

  • maven引入PageHelper与jsqlparser
  • mybatis-config.xml增加Plugin配置
  • 代码中使用PageHelper.startPage()自动分页

# maven引用PageHelper与jsqlparser

        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.2.0</version>
        </dependency>
        <dependency>
            <!--sql的解析器-->
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>3.1</version>
        </dependency>
1
2
3
4
5
6
7
8
9
10
11

# mybatis-config.xml增加Plugin配置

<!--
    plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下:
    properties?, settings?,
    typeAliases?, typeHandlers?,
    objectFactory?,objectWrapperFactory?,
    plugins?,
    environments?, databaseIdProvider?, mappers?
-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <!--详情请参照:https://pagehelper.github.io/docs/howtouse/-->
            <property name="helperDialect" value="mysql"/>
            <property name="reasonable" value="false"/>
        </plugin>
    </plugins>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# mapper.xml该怎么写还怎么写

<select id="selectPage" resultType="com.torey.mybatis.entity.TGoodsEntity">
        select * from t_goods where current_price &lt; #{value}
    </select>
1
2
3

# java文件使用

@Test
    public void testSelectPage(){
        SqlSession sqlSession=null;
        try {
            sqlSession= MyBatisUtils.openSession();
            //startPage方法会自动将下一次查询进行分页
            PageHelper.startPage(1, 10);
            Page page= (Page)sqlSession.selectList("goods.selectPage", 1000);
            System.out.println("总页数:" + page.getPages());
            System.out.println("总记录数:" + page.getTotal());
            System.out.println("开始行号:" + page.getStartRow());
            System.out.println("结束行号:" + page.getEndRow());
            System.out.println("当前页码:" + page.getPageNum());
            List<TGoodsEntity> result = page.getResult();
            System.out.println("当前数据:"+result);
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (null!=sqlSession) {
                MyBatisUtils.closeSession(sqlSession);
            }
        }
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

# 导航,上一页,下一页

12OneToMany对象关联查询
14MyBatis配置C3P0连接池

# 支持我-微信扫一扫-加入微信公众号

Aseven公众号

# 赞赏作者

赞赏作者