mysql ssm分页查询_【SSM__分页】MyBatis 分页插件 - PageHelper(示例代码)

1、Maven配置

com.github.pagehelper

pagehelper

3.4.2

com.github.jsqlparser

jsqlparser

0.9.1

2、在Mybatis配置xml中配置拦截器插件

这里的com.github.pagehelper.PageHelper使用完整的类路径。

其他五个参数说明:

增加dialect属性,使用时必须指定该属性,可选值为oracle,mysql,mariadb,sqlite,hsqldb,postgresql,没有默认值,必须指定该属性。

增加offsetAsPageNum属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,使用RowBounds分页时,会将offset参数当成pageNum使用,可以用页码和页面大小两个参数进行分页。

增加rowBoundsWithCount属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,使用RowBounds分页会进行count查询。

增加pageSizeZero属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。当该参数设置为true时,如果pageSize=0或者RowBounds.limit = 0就会查询出全部的结果(相当于没有执行分页查询,但是返回结果仍然是Page类型)。

增加reasonable属性,默认值为false,使用默认值时不需要增加该配置,需要设为true时,需要配置该参数。具体作用请看上面配置文件中的注释内容。

3、Spring配置方法

1、mybatis默认的xml配置

参考 2、在Mybatis配置xml中配置拦截器插件

2、使用spring的属性配置方式

使用spring的属性配置方式,可以使用plugins属性像下面这样配置:

classpath:mapper/*.xml

dialect=hsqldb

reasonable=true

属性配置按照上面的方式配置,每个配置独立一行即可。

4、如何在代码中使用

首先该分页插件支持以下两种调用方式:

//第一种,RowBounds方式的调用

List list = sqlSession.selectList("x.y.selectIf", null, new RowBounds(1, 10));

//第二种,Mapper接口方式的调用,推荐这种使用方式。

PageHelper.startPage(1, 10);

List list = countryMapper.selectIf(1);

1 RowBounds方式的调用

List list = sqlSession.selectList("x.y.selectIf", null, new RowBounds(1, 10));

//这种情况下也会进行物理分页查询

List selectAll(RowBounds rowBounds);

2、PageHelper.startPage静态方法调用

public void m1() {

//从xml配置文件创建spring容器

ApplicationContext applicationContext = new ClassPathXmlApplicationContext("classpath:spring/applicationContext*.xml");

//从spring容器获取TbItemMapper的代理对象

TbItemMapper mapper = applicationContext.getBean(TbItemMapper.class);

//执行查询,分页

TbItemExample tbItemExample = new TbItemExample();

//分页处理

PageHelper.startPage(1, 10);

List tbItems = mapper.selectByExample(tbItemExample);

//取商品列表

for (TbItem item : tbItems) {

System.out.println(item.getTitle());

}

//取分页信息

PageInfo tbItemPageInfo = new PageInfo<>(tbItems);

long total = tbItemPageInfo.getTotal();

System.out.println("共有信息 " + total);

}

5、重要提示

1、PageHelper.startPage方法重要提示

只有紧跟在PageHelper.startPage方法后的第一个Mybatis的查询(Select方法)方法会被分页。

2、分页插件不支持带有for update语句的分页

对于带有for update的sql,会抛出运行时异常,对于这样的sql建议手动分页,毕竟这样的sql需要重视。

3、分页插件不支持关联结果查询

原因以及解决方法可以看这里:

http://my.oschina.net/flags/blog/274000

分支插件不支持关联结果查询,但是支持关联嵌套查询。只会对主sql进行分页,嵌套的sql不会被分页

6、作者链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值