pagehelper返回count能起到优化count的作用么

Mybatis分页插件PageHelper的使用详解
转载 & & 作者:ganchuanpu
这篇文章主要介绍了Mybatis分页插件PageHelper的相关资料,该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页需要的朋友可以参考下
如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。
该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。
2.使用方法
第一步:在Mybatis配置xml中配置拦截器插件:
&!-- com.github.pagehelper为PageHelper类所在包名 --&
&plugin interceptor="com.github.pagehelper.PageHelper"&
&!-- 设置数据库类型 Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库--&
&property name="dialect" value="mysql"/&
&/plugins&
第二步:在代码中使用
1、设置分页信息:
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
//紧跟着的第一个select方法会被分页
List&Country& list = countryMapper.selectIf(1);
2、取分页信息
//分页后,实际返回的结果list类型是Page&E&,如果想取出分页信息,需要强制转换为Page&E&,
Page&Country& listCountry = (Page&Country&)
listCountry.getTotal();
3、取分页信息的第二种方法
//获取第1页,10条内容,默认查询总数count
PageHelper.startPage(1, 10);
List&Country& list = countryMapper.selectAll();
//用PageInfo对结果进行包装
PageInfo page = new PageInfo(list);
//测试PageInfo全部属性
//PageInfo包含了非常全面的分页属性
assertEquals(1, page.getPageNum());
assertEquals(10, page.getPageSize());
assertEquals(1, page.getStartRow());
assertEquals(10, page.getEndRow());
assertEquals(183, page.getTotal());
assertEquals(19, page.getPages());
assertEquals(1, page.getFirstPage());
assertEquals(8, page.getLastPage());
assertEquals(true, page.isFirstPage());
assertEquals(false, page.isLastPage());
assertEquals(false, page.isHasPreviousPage());
assertEquals(true, page.isHasNextPage());
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具Mybatis 分页插件 PageHelper 5.0.0 发布
Mybatis分页插件 - PageHelper&PageHelper 5.0.0 发布了。如果你也在用Mybatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页,部分特殊情况请看。想要使用分页插件?请看。该插件目前支持以下数据库的物理分页:Oracle&MysqlMariaDBSQLite&HsqldbPostgreSQLDB2SqlServer()InformixH2SqlServer2012Derby使用 PageHelper 你只需要在 classpath 中包含&&和。如果你使用 Maven,你只需要在 pom.xml 中添加下面的依赖:&dependency&
&&&&&groupId&com.github.pagehelper&/groupId&
&&&&&artifactId&pagehelper&/artifactId&
&&&&&version&5.0.0&/version&
&/dependency&与分页插件 PageHelper 5.0.0 同时发布的还有 pagehelper-spring-boot-starter。如果你使用 Spring Boot,你只需要在 pom.xml 中添加下面的依赖:&dependency&
&&&&&groupId&com.github.pagehelper&/groupId&
&&&&&artifactId&pagehelper-spring-boot-starter&/artifactId&
&&&&&version&1.0.0&/version&
&/dependency&有关 pagehelper-spring-boot-starter 的用法可以参考集成示例&。新版分页插件 使用 [QueryInterceptor 规范](https://github.com/pagehelper/Mybatis-PageHelper/blob/master/src/main/java/com/github/pagehelper/QueryInterceptor.java) 处理分页逻辑,与 4.x 版本相比有很大不同,新版逻辑更简单,更方便实现自己的分页逻辑。5.0.0 更新日志:使用 [QueryInterceptor 规范](https://github.com/pagehelper/Mybatis-PageHelper/blob/master/src/main/java/com/github/pagehelper/QueryInterceptor.java) 处理分页逻辑新的分页插件拦截器为 `com.github.pagehelper.PageInterceptor`新的 `PageHelper` 是一个特殊的 `Dialect` 实现类,以更友好的方式实现了以前的功能新的分页插件仅有 `dialect` 一个参数,默认的 `dialect` 实现类为 `PageHelper`&PageHelper` 仍然支持以前提供的参数,在最新的使用文档中已经全部更新`PageHelper` 的 `helperDialect` 参数和以前的 `dialect` 功能一样,具体可以看文档的参数说明增加了基于纯 `RowBounds` 和 `PageRowBounds` 的分页实现,在 `com.github.pagehelper.dialect.rowbounds` 包中,这是用于作为 `dialect` 参数示例的实现,后面会补充更详细的文档去掉了不适合出现在分页插件中的 orderby 功能,以后会提供单独的排序插件去掉了 `PageHelper` 中不常用的方法新的文档,更新历来更新日志中提到的重要内容,提供英文版本文档解决 bug [#149](http://git.oschina.net/free/Mybatis_PageHelper/issues/149)所有分页插件抛出的异常改为 PageException
Mybatis_PageHelper 的详细介绍:
Mybatis_PageHelper 的下载地址:
转载请注明:文章转载自 开源中国社区
本文标题:Mybatis 分页插件 PageHelper 5.0.0 发布
本文地址:
引用来自“Liuzh_533”的评论回复 : 支持多表分页。。不支持一对一和一对多的结果映射,支持一对一一对多的查询方式。有没有多表分页的DEMO
回复 : 支持多表分页。。不支持一对一和一对多的结果映射,支持一对一一对多的查询方式。
引用来自“Liuzh_533”的评论超过总数时是最后一页,你的数据一共就一页?根据自己的需要设置reasonable。引用来自“清风雪”的评论测试数据,7条,当查询最后一页的时候,pageInfo.nextPage会变成0,如果再点击下一页,就会查询出来第一页的内容~如此循环引用来自“Liuzh_533”的评论nextPage 确实有问题。根据需要设置 reasonable。引用来自“清风雪”的评论什么时候出新版本哦~:smile:最新版本是5.0.3
引用来自“Liuzh_533”的评论超过总数时是最后一页,你的数据一共就一页?根据自己的需要设置reasonable。引用来自“清风雪”的评论测试数据,7条,当查询最后一页的时候,pageInfo.nextPage会变成0,如果再点击下一页,就会查询出来第一页的内容~如此循环引用来自“Liuzh_533”的评论nextPage 确实有问题。根据需要设置 reasonable。什么时候出新版本哦~:smile:
引用来自“Liuzh_533”的评论超过总数时是最后一页,你的数据一共就一页?根据自己的需要设置reasonable。引用来自“清风雪”的评论测试数据,7条,当查询最后一页的时候,pageInfo.nextPage会变成0,如果再点击下一页,就会查询出来第一页的内容~如此循环nextPage 确实有问题。根据需要设置 reasonable。
引用来自“Liuzh_533”的评论超过总数时是最后一页,你的数据一共就一页?根据自己的需要设置reasonable。测试数据,7条,当查询最后一页的时候,pageInfo.nextPage会变成0,如果再点击下一页,就会查询出来第一页的内容~如此循环
超过总数时是最后一页,你的数据一共就一页?根据自己的需要设置reasonable。
count=0的时候说明没有数据,不会执行分页查询,不是 bug。
引用来自“Liuzh_533”的评论PageInfo 两个构造方法,默认的8,第二个可以指定。。好的,非常感谢,找到了。
PageInfo 两个构造方法,默认的8,第二个可以指定。。
引用来自“Liuzh_533”的评论先检查数据找找原因。找到了,别人提供的视图有问题
参考文档,和静态方法调用一样。。最新版本还可以用 PageRowBounds
先检查数据找找原因。
你是想对SQL中的某个部分进行分页?不支持这种,只能对整个sql进行分页。3被浏览165分享邀请回答暂时还没有回答,开始写第一个回答项目的发展离不开你的支持,请作者喝杯咖啡吧!
感谢您的开源项目!
使用RPC时,因Page类引用了RowBounds,导致反序列化失败
在使用dubbo时,消费端RPC调用后端服务,消费端并没有任何连接数据库的权限,因此不需要引入mybatis依赖,此时后端返回的集合是分页插件的Page类,这个类引用了RowBounds,导致消费端反序列化Page类时,找不到RowBounds类。
From 1fb313cb1acd150d087c11a7a133 Mon Sep 17 00:00:00 2001
From: "Jinkai.Ma" &&
Date: Wed, 9 Sep :59 +0800
Subject: [PATCH] =?UTF-8?q?=E4=B8=8D=E4=BE=9D=E8=B5=96RowBounds?=
MIME-Version: 1.0
Content-Type: text/ charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/main/java/com/github/pagehelper/Page.java
| 17 +++++------------
 src/main/java/com/github/pagehelper/SqlUtil.java |
6 ++----
 2 files changed, 7 insertions(+), 16 deletions(-)

diff --git a/src/main/java/com/github/pagehelper/Page.java b/src/main/java/com/github/pagehelper/Page.java
index 314b9dc..4c
--- a/src/main/java/com/github/pagehelper/Page.java
+++ b/src/main/java/com/github/pagehelper/Page.java
@@ -24,8 +24,6 @@

 package com.github.

-import org.apache.ibatis.session.RowB
-
 import java.util.ArrayL
 import java.util.L

@@ -105,23 +103,18 @@ public class Page&E& extends ArrayList&E& {

setReasonable(reasonable);

}

-
public Page(RowBounds rowBounds, boolean count) {
-
this(rowBounds, count ? Page.SQL_COUNT : Page.NO_SQL_COUNT);
-
}
-
-
-
public Page(RowBounds rowBounds, int total) {
+
public Page(int offset, int limit, int total) {

super(0);
-
if (rowBounds.getOffset() == 0 && rowBounds.getLimit() == Integer.MAX_VALUE) {
+
if (offset == 0 && limit == Integer.MAX_VALUE) {

pageSizeZero =

this.pageSize = 0;

} else {
-
this.pageSize = rowBounds.getLimit();
+
this.pageSize =

}
-
this.startRow = rowBounds.getOffset();
+
this.startRow =

//RowBounds方式默认不求count总数,如果想求count,可以修改这里为SQL_COUNT

this.total =
-
this.endRow = this.startRow + rowBounds.getLimit();
+
this.endRow = this.startRow +

}


public List&E& getResult() {
diff --git a/src/main/java/com/github/pagehelper/SqlUtil.java b/src/main/java/com/github/pagehelper/SqlUtil.java
index 81ebcdf 100644
--- a/src/main/java/com/github/pagehelper/SqlUtil.java
+++ b/src/main/java/com/github/pagehelper/SqlUtil.java
@@ -294,10 +294,8 @@ public class SqlUtil implements Constant {

if (page == null) {

if (params instanceof RowBounds) {

RowBounds rowBounds = (RowBounds)
-
if (offsetAsPageNum) {
-
page = new Page(rowBounds.getOffset(), rowBounds.getLimit(), rowBoundsWithCount);
-
} else {
-
page = new Page(rowBounds, rowBoundsWithCount);
+
page = new Page(rowBounds.getOffset(), rowBounds.getLimit(), rowBoundsWithCount);
+
if (!offsetAsPageNum) {

//offsetAsPageNum=false的时候,由于PageNum问题,不能使用reasonable,这里会强制为false

page.setReasonable(false);

}
--
2.3.2 (Apple Git-55)

按照你这种方式修改后,实际调用的:
public Page(int pageNum, int pageSize, boolean count) {

this(pageNum, pageSize, count ? Page.SQL_COUNT : Page.NO_SQL_COUNT, null);
}

offset就直接当成了pageNum,所以不能直接这么改。
Page类的构造方法由于1.0版本的原因,看着很乱。。
你有没有更好的修改方法?
不影响代码逻辑的话,可以提取出一个vo类,来代替RowBounds,但是看代码,只有SqlUtil.java的public Page getPage(Object params)使用到了,把方法参数改成int[]就行了,这样也不影响代码逻辑
确实可以考虑int[]
状态更改为 已关闭
使用dubbo回调时,返回的list对象分页信息丢失,
原因:fastjson,hessian对对象继承实现Collection做了特殊实现,导致序列化时并未对属性进行序列化。
这种情况建议你参考PageInfo把结果转换为非List类型后返回
后才可以发表评论&>&ssm整合使用pagehelper插件分页源代码
ssm整合使用pagehelper插件分页源代码
上传大小:10.24MB
ssm整合使用pagehelper插件分页源代码,带数据库。直接可以运行
综合评分:2(3位用户评分)
下载个数:
{%username%}回复{%com_username%}{%time%}\
/*点击出现回复框*/
$(".respond_btn").on("click", function (e) {
$(this).parents(".rightLi").children(".respond_box").show();
e.stopPropagation();
$(".cancel_res").on("click", function (e) {
$(this).parents(".res_b").siblings(".res_area").val("");
$(this).parents(".respond_box").hide();
e.stopPropagation();
/*删除评论*/
$(".del_comment_c").on("click", function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_invalid/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parents(".conLi").remove();
alert(data.msg);
$(".res_btn").click(function (e) {
var parentWrap = $(this).parents(".respond_box"),
q = parentWrap.find(".form1").serializeArray(),
resStr = $.trim(parentWrap.find(".res_area_r").val());
console.log(q);
//var res_area_r = $.trim($(".res_area_r").val());
if (resStr == '') {
$(".res_text").css({color: "red"});
$.post("/index.php/comment/do_comment_reply/", q,
function (data) {
if (data.succ == 1) {
var $target,
evt = e || window.
$target = $(evt.target || evt.srcElement);
var $dd = $target.parents('dd');
var $wrapReply = $dd.find('.respond_box');
console.log($wrapReply);
//var mess = $(".res_area_r").val();
var mess = resS
var str = str.replace(/{%header%}/g, data.header)
.replace(/{%href%}/g, 'http://' + window.location.host + '/user/' + data.username)
.replace(/{%username%}/g, data.username)
.replace(/{%com_username%}/g, data.com_username)
.replace(/{%time%}/g, data.time)
.replace(/{%id%}/g, data.id)
.replace(/{%mess%}/g, mess);
$dd.after(str);
$(".respond_box").hide();
$(".res_area_r").val("");
$(".res_area").val("");
$wrapReply.hide();
alert(data.msg);
}, "json");
/*删除回复*/
$(".rightLi").on("click", '.del_comment_r', function (e) {
var id = $(e.target).attr("id");
$.getJSON('/index.php/comment/do_comment_del/' + id,
function (data) {
if (data.succ == 1) {
$(e.target).parent().parent().parent().parent().parent().remove();
$(e.target).parents('.res_list').remove()
alert(data.msg);
//填充回复
function KeyP(v) {
var parentWrap = $(v).parents(".respond_box");
parentWrap.find(".res_area_r").val($.trim(parentWrap.find(".res_area").val()));
评论共有2条
下载看不到继续下载
这代码写的我都不想说了
<img src="//csdnimg.cn/release/download/old_static/images/minetype/blog.svg" title="MyBatis分页插件PageHelper的使用">
MyBatis分页插件PageHelper的使用
林炳文Evankaka
综合评分:
积分/C币:11
VIP会员动态
CSDN下载频道资源及相关规则调整公告V11.10
下载频道用户反馈专区
下载频道积分规则调整V1710.18
spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip
资源所需积分/C币
当前拥有积分
当前拥有C币
输入下载码
为了良好体验,不建议使用迅雷下载
ssm整合使用pagehelper插件分页源代码
会员到期时间:
剩余下载个数:
剩余积分:0
为了良好体验,不建议使用迅雷下载
积分不足!
资源所需积分/C币
当前拥有积分
您可以选择
程序员的必选
绿色安全资源
资源所需积分/C币
当前拥有积分
当前拥有C币
(仅够下载10个资源)
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
为了良好体验,不建议使用迅雷下载
资源所需积分/C币
当前拥有积分
当前拥有C币
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
你当前的下载分为234。
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可返还被扣除的积分
被举报人:
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:
ssm整合使用pagehelper插件分页源代码}

我要回帖

更多关于 pagehelper count 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信