首页(162) xml(5) spring(1) 生活(8) java(70) 代码(10) 英语(4) 数据库(7) c#(14) 成长(10) 软件工程(27)  写新日志
 
 

玻璃杯中的花生壳

  真爱的事业和真正的爱情一生只有一次,都值得我们温柔地相待,因为那种感觉是永远都无法复制的, 这世界真正属于你的东西其实并不多,你不好好珍惜,它便会离你而去,包括机遇,包括爱情,包括生命。
   不要找任何理由,  当幸福在你身边的时候就抓住它,你就一定会很幸福! 
   

时 间 记 忆
«September 2025»
123456
78910111213
14151617181920
21222324252627
282930

最 新 评 论
回复:xml的Jdom解析过程详解
回复:突然想到的几句话!
 Boyle came out of n
回复:xml的Jdom解析过程详解
回复:配置Spring数据源
回复:使用SAX解析XML
回复:java中写文件操作时FileOu
回复:关联和依赖关系的区分
回复:HttpSessionListen
回复:Spring AOP四种创建通知(

最 新 日 志
Java开发者的十大戒律
配置Spring数据源
java多线程设计模式
java中switch的使用
性格,编码,测试
突然想到的几句话!
理解Spring AOP中的关键概念
Spring AOP四种创建通知(拦截器
xml的四种解析方法 比较 sax,do
xml的Jdom解析过程详解

最 新 留 言
签写新留言

我渴望知识
很好的东东
帖子不错,道声谢
想拜师学艺
我的呼喊

搜 索


用 户 登 录
用户名称:
登陆密码:
密码保存:

友 情 连 接

模板设计:部落窝模板世界

blog名称:玻璃杯中的花生壳
日志总数:162
评论数量:249
留言数量:1
访问次数:827559
建立时间:2004年11月4日
 
 
 
[java]JAVA实现关系数据库的翻页
[ 2006/12/8 14:02:52 | By: 玻璃杯中的花生壳 ]
 
JAVA实现关系数据库的翻页 by masse@CSDN:     这个方法没有什么特别的,其实也算不上原创。也是在学习中得出来的。因此如果侵犯了别人的权益,请来信通知。为了方便初学者了解原理,代码中我没有使用任何框架。代码可以适用于mysql,oracle,sqlserver,db2等等主流关系数据库。    以下代码是我从自己以前写的程序中抽取出来的核心,只能表述思路,如要使用,可能还需要很多调整。 (1) 数据库表sys_User定义如下:           ID   Name    Email                  Desc        …           1    masse   karkaiy_007@163.com    当午        …       其中,ID为整型,其它均为字符串。 (2) User类,请自行为每个方法添加getter和setter方法。为了方便,我写了User(ResultSet)这个构造函数。public class User{    public User(ResultSet rs)    {        id = rs.getInt("ID");        name = rs.getString("Name");        email = rs.getString("Email");        desc = rs.getString("Desc");    }    private int id;    private String name;    private String email;    private String desc;} (3) sysUserTable类,用于数据库读取,我这里仅仅给出了最核心部分。其中对于start,count等的有效性参数,请自行判断;sql语句如果有查询的filter,或者order等语句,也可根据情况自行调整。我只给出程序框架。 // 取出从start开始的count条记录。如,start为1,count为20,则取出数据库前20条记录public class SysUserTable{        public List getUsers(Connection conn, int start, int count) throws        Exception    {        PreparedStatement pStmt = null;        ResultSet rs = null;        List result = new ArrayList();        try        {            String sql = "SELECT * FROM sys_User";            pStmt = conn.preparedStatement(sql);            rs = pStmt.executeQuery();            if (rs.absolute(startRow))            {                result.add(new User(rs));                for (int rowIndex = 0; rowIndex < rowCount - 1; rowIndex++)                {                    if (!rs.next())                    {                        break;                    }                    result.add(new User(rs));                }            }        }        catch (Exception e)        {            throw e; // process exception here        }        finally        {            // close rs & pStmt here        }        return result;    }} (4) JSP页面的实现。基本的思路就是,根据当前页数,计算出需要的start即可。如指定每页count条,当前在第n页,那么start=(n-1)*count+1。然后作为参数,即可得到翻页结果集。具体的实现可以用传统的翻页,也可用ajax。这里灵活性很大,就不再赘述了。 方法很简单,都有些不要意思贴出来。但是觉得优势有以下(1)没有使用任何框架,适合初学者,也适合对某些成型系统进行升级修改。同时扩展性很强。(2)使用几乎所有的关系数据库,因为没有使用任何特殊的sql语法。比如top ,limit,rownum等等,sql也可以根据情况修改,实现任何查询的翻页。(3)性能:具体性能没有经过测试,以前在一个复杂的应用下,测过50万的数据,还不错。如果应用简单,这个性能指数会有所上升。 -------------------------------------------------------我具体实现里面全是接口,而且代码是写了另外的代码来自动生成的,相当于是自己实现的一套框架(那个框架最初是一个同事写的,很牛的人)。 最后封装的形式如下 public interface Service{   public int getUserCount()throws Exception;   public int getUserCount(String filter)throws Exception;   public List getUsers()throws Exception;   public List getUsers(String filter)throws Exception;    public List getUsers(int start ,int count)throws Exception;     public List getUsers(String filter,int start ,int count)throws Exception;   public List getUsers(String filter,int start ,int count,String[] sortNames,int[] sortTypes)throws Exception;} 仅一个单独的实体表相关的接口就有几十个。因为是用自己写的框架生成的,所以也不存在工作量的问题。 --------------------------------------------------- 整个系统的底层都从上面的接口作为入口,所有相关的数据库操作,都封装以达到事务安全。也不会把连接暴露出来。在security方面,可以再加入接口调用的登陆认证。 如果要针对数据库优化,只需要改动生成代码的框架,改里面的代码模板,改几行,就能实现代码的重构。。 我给出的仅仅是通用数据库无框架实现翻页的雏形罢了 ---------------------------------------------------    
 

阅读全文(1637) | 回复(0) | 编辑 | 精华
 

发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)
 
部落窝Blog模板世界部落窝Blog模板世界
站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.184 second(s), page refreshed 144757418 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号