pagehelper分页查询
如果觉得写的还可以,点个赞支持一下笔者呗!你的点赞和关注会让我更快更新哦。笔者会持续更新关于Java和大数据有关的文章。目前集中精力在更新java框架的内容。
使用方法
1. 引入分页插件
引入分页插件有下面2种方式,推荐使用 Maven 方式。
1). 引入 Jar 包
你可以从下面的地址中下载最新版本的 jar 包
https://oss.sonatype.org/content/repositories/releases/com/github/pagehelper/pagehelper/
http://repo1.maven.org/maven2/com/github/pagehelper/pagehelper/
由于使用了sql 解析工具,你还需要下载 jsqlparser.jar:
http://repo1.maven.org/maven2/com/github/jsqlparser/jsqlparser/0.9.5/
2). 使用 Maven
在 pom.xml 中添加如下依赖:
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>最新版本</version></dependency>
最新版本号可以从官网首页查看。
<dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.1.10</version></dependency><dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>2.0</version></dependency>
2. 配置拦截器插件
特别注意,新版拦截器是 com.github.pagehelper.PageInterceptor。 com.github.pagehelper.PageHelper 现在是一个特殊的 dialect 实现类,是分页插件的默认实现类,提供了和以前相同的用法。
1. 在 MyBatis 配置 xml 中配置拦截器插件
<!--plugins在配置文件中的位置必须符合要求,否则会报错,顺序如下: properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?, plugins?, environments?, databaseIdProvider?, mappers?--><plugins><!--com.github.pagehelper为PageHelper类所在包名--><plugininterceptor="com.github.pagehelper.PageInterceptor"><!--使用下面的方式配置参数,后面会有所有的参数介绍--><propertyname="param1"value="value1"/></plugin></plugins>
<!--启用Pagehelper分页插件--><plugins><plugininterceptor="com.github.pagehelper.PageInterceptor"><!--设置数据库类型--><propertyname="helperDialect"value="mysql"/><!--分页合理化--><propertyname="reasonable"value="true"/></plugin></plugins>
goods.xml(原有基础上加入如下句子)
<selectid="selectPage"resultType="com.imooc.mybatis.entity.Goods">select*fromt_goodswherecurrent_price< 1000</select>
/*** PageHelper分页查询*/publicvoidtestSelectPage() throwsException { SqlSessionsession=null; try { session=MyBatisUtils.openSession(); /*startPage方法会自动将下一次查询进行分页*/PageHelper.startPage(2,10); Page<Goods>page= (Page) session.selectList("goods.selectPage"); 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<Goods>data=page.getResult();//当前页数据for (Goodsg : data) { System.out.println(g.getTitle()); } System.out.println(""); } catch (Exceptione) { throwe; } finally { MyBatisUtils.closeSession(session); } }
不同数据库实现分页的原理
注意:这里指的是获取前12条到第20条数据