📄 readme.txt.svn-base
字号:
致谢:
在这里我要感谢好友软件日志,是他在我的软件生涯中提出了很多有意义的想法!是他在我烦恼的时候
陪我聊天!
说明:
(1)写分页程序的相关类的想法来源于好友(软件日志:qq呢称)。并由他提出了ms sqlserver下的分页sql的实现,
个人感觉不错,故产生了完成相关通用类的念头
(2)ms sqlserver下的分页sql原理:通过正序与反序记录集之差获得所需页的记录集。
参见:org.derrick.jdbc.page.sql.MssqlPageSqlHelper
设有表:CREATE TABLE[pageDemo] (
[id] [int] NOT NULL ,
[name] [nvarchar] (50) ,
[createDate] [datetime]
)
当然id是主键啦。,设共有1000条记录,id的值从1到1000,每页记录数为100。
则:select top 100 * from
(select top 1000 * from pageDemo a order by a.id desc) b
order by b.id asc
返回第1页记录。
则:select top 100 * from
(select top 800 * from pageDemo a order by a.id desc) b
order by b.id asc
返回第3页记录。
(3)my sql 下的分页原理是利用limit,参见org.derrick.jdbc.page.sql.MysqlPageSqlHelper
(4)oracle 分页原理是利用rownum,参见org.derrick.jdbc.page.sql.OraclePageSqlHelper
(5) 第三方库文件:log4j.jar,commons-beanutils.jar,jtds.jar(mssqlserver数据库驱动)
(6) 运行test 之前请先检查是否拥有相关的数据库驱动:
参见配置文件oracle.config(oracle官方驱动)mssqldb.config(微软官方驱动),mssqljtdsdb.config(jtds驱动),mysqldb.config(mysql官方驱动)
并创建相应的测试表:
//oracle
CREATE TABLE pageDemo (
id number(10) NOT NULL ,
name nvarchar2(50) ,
createDate date ,
CONSTRAINT KEY PRIMARY KEY (ID)
) ;
//mysql
CREATE TABLE `pagedemo` (
`id` int(10) unsigned NOT NULL default '0',
`name` varchar(45) default NULL,
`createDate` datetime default NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
//ms sqlserver
CREATE TABLE [pageDemo] (
[id] [int] NOT NULL ,
[name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[createDate] [datetime] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [pageDemo] ADD
CONSTRAINT [PK_pageDemo] PRIMARY KEY CLUSTERED
(
[id]
) ON [PRIMARY]
GO
总结:目前这组通用类只提供了oracle、mysqlser、mysql三种版本的代码,其余数据库版本代码有兴趣的朋友可以实现,不过sysbase数据库
我没有找到对应的实现方式,具体使用方法参见test类:org.derrick.jdbc.page.TestPageHelper及对应数据库子类。
欢迎交流!我的qq是370922517(llz),邮箱:liudongbaollz@sohu.com
源码还包括部分工作过程使用的工具类,有兴趣的朋友可以自己看看
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -