声明:本文同时发表于一搏IT社区、CSDN、昨夜风个人网站,欢迎任何网站/个人转载,但请保留声明信息和作者信息,多谢合作!
作者:靳英辉(昨夜风)
版本:Jpage v2.0 for php
发表:2008-12-02
______________________________________________________________
在先后推出针对Java、.Net2.0开发语言下的Jpage两版分页之后,随着一搏IT社区、abcbaby、加拿房产网、中国开源网的开发需求,以及新东方一搏PHP01班的盛大起航,对php下的Jpage分页需求,提上日程。
版本历史:
2007年10月,Jpage分页php版诞生,初步应用于几个项目中。
2007年11月,我和PHP01的学生们,一起对Jpage第一版进行了全面的测试和完善。
2008年12月,Jpage 2.0 php的诞生。
Jpage v2.0 for php
特点:
1、通用的数据封装。
只需包含mysql.php,解决所有增、删、改、查的问题。执行SQL语句、执行过程、返回数组结果、返架一行结果、返回一行一列,尽在其中。
对数据持装类,吸纳了微软的.NET数据层的思想,结合了实际开发需求,将大大提高开发效率。
2、只需一条查询语句。
使用简单、开发快捷、最优查询一直是Jpage系列分页的核心思想。只需一条语句,即支持普通查询、海量查询,并同时得到多种分页样式, 这就是Jpage分页。
3、优化小量查询和海量查询。
经Mysql5 260万条数据测试,Jpage分页执行飞快。明显优于网上其它分页以及基于PHP程序层结果集的分页。在Mysql中,Jpage分页采用了limit来分页,这延续了Jpage分页“需多少,取多少”基于数据库层面的分页思想。
4、内置三种页脚风格。
为了解决不同的显示需求,Jpage分页内置了三种页脚显示风格:
默认样式:适合一般企业需求。
简捷样式:适合窄页面显示需求。
数据样式:适合海量数据显示需求。
除了上述三种风格之外,开发者还可在footPage.php中自定义风格。
5、灵活的页脚样式控制。
你可以定义诸如:#page a{color:red}样式表文件,来得到不同显示效果。
6、与Jwork框架无缝集成。
作为Jwork框架的前身,Jpage分页,它不是一个在战斗。Jwork框架是软件开发的经验集、通用集、效率集。
对比:
一般分页/自定分页存在的问题:
1、网址传参的问题。
网上有些分页,包括我们自己写的分页,往往忽略了网址传参的问题。我们知道,分页的网址一般为:
list.php list.php?page=2,
但当网址有参数时,
list.php?name=yiboit&id=20
一般分页则为:list.php?page=2
Jpage分页为:list.php?name=yibit&id=20&page=2
2、书写复杂、代码冗余、和数据层独立。
一般的分页,和数据层独立,并且和视图(页面)过于耦合,在使用上、开发上、运行效率上都是值得商榷的。
Jpage分页,已先后发布Java、.Net、PHP三版,基于同一思想,经过百万级项目测试、压力测试,尚未出现任何问题。
Jpage分页,把分页作为数据层一个功能,把显示层(分页样式)以配置文件独立出来,站在“松散耦合”的高度,让开发如此便捷。
3、基于结果集的分页或基于存储过程。
分页主要有两种方案,一种是基于结果集的指针,一种是基于数据端TOP N的思想。
基于结果集指针的方案,不管你每页看多少数据,我都把数据取出来,然后用指针控制显示哪部分。这种方案,不适合大量/海量数据的查询。
另一方案,就是TOP N的思想,即“需多少,取多少”,这种方案支持海量查询,但一般需要写两条sql语句,且写法复杂,所以有些程序员,用存储过程来实现了,在网上可以看到许多基于过程的海量分页解决方案。因为书写复杂,让许多程序员,特别是ASP程序员,放弃了。
可见,“需多少,取多少”的分页,方为上道。业界知名Hibernate数据层框架,采用的就是TOP N的分页,但Hibernate未能显示页脚,也未能整合分页语句,所以留下了分页“遗憾”,也许也不是“遗憾”,因为Hibernate旨在解决对象的持久化问题,而不是分页问题。
Jpage分页弥补以上所有不足,支持普通查询、海量查询,同时使用简单。Jpage分页的方便程度,对开发者而言,已达到了实现分页,和不实现的写法是一样的。
4、简单实现,未能优化。
分页,并不是显示出页脚,上一页下一页就OK了,分页的好坏,直接影响软件系统的运行,服务器的负荷。一般的分页只是实现,未能达到优化。
Jpage分页,已走过了一年的历程,在数据查询上,已达到了对数据查询最为优化的状态;在代码结构上,先后做了多次调整的设计;在项目使用上,先后被csdn、yiboit、zuoyefeng等网站的朋友,大量被下载使用。
示例:
<?php
include("../jwork/mysql.php");
//SQL查询语句
$sqllist="select * from news";
//得到Jwork数据对象
$data= new MysqlDao();
//设置分样样式,默认为default
$data->style="data";
//分页查询,返回二维数组
$list=$data->jpage($sqllist);
?>
<table width="98%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#76C4F1">
<tr class="table_left">
<td width="60" >序号</td>
<td >新闻名称</td>
</tr>
<?php
while (list($rowid,$row)=each($list))
{
$rid=$data->jpageRowId($rowid); //序号
$news_title=$row["news_title"];
$news_time=$row["news_time"];
echo <<<EOF
<tr>
<td width="60" bgcolor="#ffffff">$rid</td>
<td bgcolor="#ffffff">$news_name</td>
<td bgcolor="#ffffff">$news_time</td>
</tr>
EOF;
}
?>
</table>
<table width="98%" border=0 align="center">
<tr><td><?php echo $data->foot ?></td></tr>
</table>
敬请关注:
2008年1月1日,Jpage分页三个版本,将全面开源!
届时,Jpage分页,将作为ccopen.net中国源码开放社区第一个开源项目出现。
Jpage,做好分页,做好自己!
欲求源码,留下大名和邮箱!
Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1920245