Mybatis分页插件PageHelper正确的用法(网上有2篇不够科学的文章)「建议收藏」

Mybatis分页插件PageHelper正确的用法(网上有2篇不够科学的文章)

大家好,又见面了,我是全栈君。

今天下午在Mybatis项目中。实现分页。由于我是后加入项目中的,Leader用的是PageHelper这个组件。可是我在实际使用的过程中遇到了2个大问题。

 1.
    在这篇文章中。作者有提到须要添加PageHelper的配置,原话“或者假设你使用Maven,你能够加入例如以下依赖: 

   这句话是有问题的,
  
<plugins>

    
<!-- com.github.pagehelper为PageHelper类所在包名 -->
    
<
plugin 
interceptor
=
"com.github.pagehelper.PageHelper"
>
        
<
property 
name
=
"dialect" 
value
=
"mysql"
/>
        
<!-- 该參数默觉得false -->
        
<!-- 设置为true时,会将RowBounds第一个參数offset当成pageNum页码使用 -->
        
<!-- 和startPage中的pageNum效果一样-->
        
<
property 
name
=
"offsetAsPageNum" 
value
=
"true"
/>
        
<!-- 该參数默觉得false -->
        
<!-- 设置为true时,使用RowBounds分页会进行count查询 -->
        
<
property 
name
=
"rowBoundsWithCount" 
value
=
"true"
/>
    
</
plugin
>
</
plugins
>
   这几段插件配置的代码。应该放到Mybatis的config配置文件里,而非Maven。
  
   后来。听Leader说,他在这也被误导了。搞了一天时间吧。

2. 

http://www.oschina.net/p/mybatis_pagehelper
   作者使用PageHelper的方法不太对,尽管Java后台測试是能够的。可是在FTL中显示的时候,EL表达式不能正常显示。

   作者的代码:
   
@Test

public
void
testPageHelperByStartPage() 
throws
Exception {
    
String logip = 
""
;
    
String username = 
"super"
;
    
String loginDate = 
""
;
    
String exitDate = 
null
;
    
String logerr = 
null
;
    
//不进行count查询。第三个參数设为false
    
PageHelper.startPage(
1

10

false
);
    
//返回结果是Page<SysLoginLog>    
    
//该对象除了包括返回结果外。还包括了分页信息,能够直接按List使用
    
List<SysLoginLog> logs = sysLoginLogMapper
            
.findSysLoginLog(logip, username, loginDate, exitDate, logerr);
    
Assert.assertEquals(
10
, logs.size());
 
    
//当第三个參数没有或者为true的时候,进行count查询
    
PageHelper.startPage(
2

10
);
    
//返回结果是Page<SysLoginLog>    
    
//该对象除了包括返回结果外,还包括了分页信息,能够直接按List使用
    
Page<SysLoginLog> page = (Page<SysLoginLog>) sysLoginLogMapper
            
.findSysLoginLog(logip, username, loginDate, exitDate, logerr);
    
Assert.assertEquals(
10
, page.getResult().size());
    
//进行count查询。返回结果total>0
    
Assert.assertTrue(page.getTotal() > 
0
);
}

    假设在Freemarker的FTL页面中。打印${

page.pageNum
}会报错,大致的意思是“expected a hash,but is a sequence”。
期待是hash类型,但实际上序列,list、ArrayList都算作序列。

    这个地方情况比較特殊,
Page是一个JavaBean。有若干属性,可是他又继承了ArrayList。经实际分析,
Freemarker把这个对象当作了ArrayList,能够直接遍历<#list page as item></#list>。

     正确的方法应该是:

   
PageHelper.startPage(
1

10
);

List<Country> list = countryMapper.selectAll();
PageInfo page = 
new 
PageInfo(list);
assertEquals(
10
, list.size());

 
  今天遇到了这2个大问题。特意总结下,希望后来的人,不要再被误导了。

  除了PageHelper这个分页插件,我在秒针工作的时候,原秒针Web前端高级project师 现百度高级project师,
张少龙-默默。
他也自己实现了一个插件,今后再分享出来。

小雷FansUnion
2014年10月20日
湖北武汉

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115764.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • pytorch实现resnet_如何搭建平台

    pytorch实现resnet_如何搭建平台ResNet34网络结构先上图参照ResNet18的搭建,由于34层和18层几乎相同,叠加卷积单元数即可,所以没有写注释,具体可以参考我的ResNet18搭建中的注释,ResNet34的训练部分也可以参照。importtorchimporttorch.nnasnnfromtorch.nnimportfunctionalasFclassCommonBlock(nn.Module):def__init__(self,in_channel,out_chann

    2022年10月5日
    3
  • padstart方法_PADS 2.4打开PCB显示已停止工作

    padstart方法_PADS 2.4打开PCB显示已停止工作之前两天搞得头皮发麻,有个需求是写个版本比较的方法,比如’10.5.4’版本是否大于’9.52.1’版本。正常的思路是使用split去截取几段,然后做递归比较。如下://版本对比constsort=(item1,item2)=>{if(item1[0]>item2[0]){returntrue}elseif(item1…

    2025年10月14日
    3
  • iframe关闭父页面(iframe嵌套https页面)

    iframe是html标签,具有一般标签的属性:widthiframe的高度heightiframe的宽度srciframe里面加载的页面urlname可以通过window.frames[name]获取到frameid和其他的html标签id一样在主页面中通过iframe标签可以引入其他子页面其中可以通过以下方法获取到iframe内部子页面的信息&amp;amp;amp;amp;lt;!–…

    2022年4月10日
    321
  • Java入门——第一个Java程序HelloWorld(Dos命令窗口)

    Java入门——第一个Java程序HelloWorld(Dos命令窗口)麻烦找一个指定盘符的确切文件位置(尽量不要把要运行的.java文件建在桌面上,因为在Dos命令行中找文件路径比较麻烦!),可以创建一个专门用来练习入门Java程序的文件夹。(比如我这个暂时存放.java文件的文件夹在F盘的Java_WorkBenth文件夹里面)1、第一步,打开Windows资源管理器的查看文件后缀名功能(防止出现xxx.java.txt的文件格式)。2、创建一…

    2022年5月28日
    42
  • 学习Java必读的10本书籍

    学习Java必读的10本书籍来源|愿码(ChainDesk.CN)内容编辑愿码Slogan|连接每个程序员的故事网站|http://chaindesk.cn愿码愿景|打造全学科IT系统免费课程,助力小白用户、初级工程师0成本免费系统学习、低成本进阶,帮助BAT一线资深工程师成长并利用自身优势创造睡后收入。官方公众号|愿码|愿码服务号|区块链部落免费加入愿码全思维工程师社群|任一…

    2022年6月18日
    23
  • 语音信号处理领域国内外高手homepage分享(一)

    语音信号处理领域国内外高手homepage分享(一)详细内容见群文件,欢迎大家加入音频/识别/合成算法群(696554058)交流学习,谢谢!本内容原创,转载和使用请注明出处,谢谢配合;Zheng-HuaTan的主页:http://kom.aau.dk/~zt/index.htm#Research%20interests(谭政华博士曾经是美国麻省理工学院(MIT)计算机科学与人工智能实验室(CSAIL)的客座科学家/教授,…

    2022年5月25日
    35

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号