- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
 - 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
 - 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
 - 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
 - 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
 - 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
 - 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
 
                        查看更多
                        
                    
                利用Mybatis的动态SQL实现物理分页.doc
                    利用Mybatis的动态SQL实现物理分页
摘要:实际项目中,经常会遇到分页的问题,mybatis自带的分页使用的是内存分页,如果数据量较大,那么必定
会发生内存溢出。本文提出一种方法,利用mybatis强大的动态sql,为查询语句加上物理分页功能。
关键词:mybatis  动态sql  分页  物理分页
the use of dynamic sql implementation mybatis physical page
chen-ling  xia-xun
luzhou vocational and technical college,sichuan,luzhou,646005,china
abstracts:actual projects, the problems often encountered pages, mybatis own page using paging, if the data is large, then there must be a memory overflow occurs. this paper presents a method, using mybatis powerful, dynamic sql, the query with the physical paging.
keywords:mybatis  dynamic sql  paging  physical page
1、mybaits 简介
mybatis,前称ibatis,后改名为mybatis,截止本文成文,最新版本是3.0.6。它和hibernate是java世界使用最多的两种orm框架。hibernate理念最为先进,完全实现面向对象的数据库编程,不需要掌握sql语句,即可实现数据库操作,能够节省开发人员编写大量sql语句的时间。但是,hibernate在处理多表关联时,可能会出现n+1问题,性能会有较大影响,要解决性能问题,需要较深的hibernate知识和项目经验。mybatis需要自己写sql语句,开发效率不如hibernate,很难做到底层多数据库的通用。但对程序员来说有更高的可控性,可以更容易的对sql语句进行优化,提高效率。
在开发中直接使用jdbc一个非常普遍的问题就是动态sql。如果参数值、参数本身和数据列都是动态sql,通常的解决方法就是写很多if-else条件语句和字符串连接。而mybatis通过ognl提供了一套非常清晰的方法来解决动态sql的问题。
2、实现mysql的物理分页
mysql使用limit子句来实现数据库的物理分页,limit子句接受一个或两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数量。在mybatis中,只需要在相应的查询语句后,加上limit子句,即可实现物理分页。如下,以一个只有字段id,name,age的表为例。该配置会根据传入的hashmap,如果含有键start和键end,那么即通过mybatis强大的动态sql,生成含有mysql分页的sql语句。
select * from users
limit #{start},#{end}
3、实现oracle的物理分页
oracle数据库的物理分页,相对mysql没有那么方便,使用rownum嵌套查询来实现分页,为简化配置,在mybatis中定义一个oracle的分页配置xml文件,其它实体映射文件引入该文件即可。分页配置xml文件主要代码如下:
select * from ( select row_.*, rownum rownum_ from (
) row_ where rownum  #{start}
在需要做分页的查询语句中,最开始的位置引入head部分,最后的位置引入tail部分,如果在传入的hashmap,有键start和键end,即会动态生成含有oracle物理分页的sql语句。
select * from users
4、结语
分页查询是系统开发中常用的功能,mybatis 3和ibatis 2自带的分页,使用的是内存分页,即将所有数据读取到内存,然后判断要显示哪些条目。如果数据量比较大,毫无疑问会发生内存溢出,客户端获取数据很慢甚至无法获取到数据,因此,实际开发中,使用较多的是利用数据库自带的分页语句来实现物理分页。本文讲述了如何为mybatis 3添加mysql和oracle的物理分页功能。
参考文献
[1]李辉,王瑞波.多条件分页查询优化的设计方法[j].计算机工程,2010,2.
[2]李刚.轻量级java ee企业应用实战[m].电子工业出版社,2011.
                                                 
                
原创力文档
                        

文档评论(0)