`
digyso
  • 浏览: 142176 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

DAO设计模式&&struts分页

阅读更多
今天在网上看了dao设计模式和一个struts分页方法,自己将他们结合起来写了一个程序实例以加深对他们的理解和运用。

程序实例如下:

首先用mysql创建一个person表,sql语句为:
createtableperson
(
pid
intauto_increment,
pname
varchar(20),
primarykey(pid)
);

insertintoperson(pname)values('x');
insertintoperson(pname)values('y');
insertintoperson(pname)values('z');
insertintoperson(pname)values('a');
insertintoperson(pname)values('b');
insertintoperson(pname)values('c');
insertintoperson(pname)values('d');
insertintoperson(pname)values('e');
insertintoperson(pname)values('f');
insertintoperson(pname)values('g');
insertintoperson(pname)values('h');
insertintoperson(pname)values('k');
insertintoperson(pname)values('j');
insertintoperson(pname)values('l');

dao工厂类DAOFactory.java如下:
/AbstractclassDAOFactory
publicabstractclassDAOFactory...{

//ListofDAOtypessupportedbythefactory
publicstaticfinalintMYSQL=1;
//...

//TherewillbeamethodforeachDAOthatcanbe
//created.Theconcretefactorieswillhaveto
//implementthesemethods.
publicabstractPersonDAOgetPersonDAO();
//...

publicstaticDAOFactorygetDAOFactory(
intwhichFactory)...{

switch(whichFactory)...{
caseMYSQL:
returnnewMysqlDAOFactory();
//...
default:
returnnull;
}

}

}

MysqlDAOFactory.java代码如下:
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.ResultSet;
importjava.sql.Statement;

publicclassMysqlDAOFactoryextendsDAOFactory...{
privatestaticfinalStringDRIVER=
"com.mysql.jdbc.Driver";
privatestaticfinalStringDBURL=
"jdbc:mysql://localhost/daotest?user=root&password=101213&useUnicode=true&characterEncoding=gb2312";

//methodtocreateCloudscapeconnections
publicstaticConnectioncreateConnection()...{
//UseDRIVERandDBURLtocreateaconnection
//Recommendconnectionpoolimplementation/usage
Connectionconn=null;
try...{
Class.forName(DRIVER).newInstance();
conn
=DriverManager.getConnection(DBURL);
}
catch(Exceptione)...{
e.printStackTrace();
}

returnconn;
}


publicstaticvoidcloseAll(Connectionconn,Statementstmt,ResultSetrs)...{
if(rs!=null)...{
try...{
rs.close();
}
catch(Exceptione)...{
System.out.println(
"closeresultsetfailed."+e.getMessage());
}

}

if(stmt!=null)...{
try...{
stmt.close();
}
catch(Exceptione)...{
System.out.println(
"closestatementfailed."+e.getMessage());
}

}

if(conn!=null)...{
try...{
conn.close();
}
catch(Exceptione)...{
System.out.println(
"closeconnectionfailed."+e.getMessage());
}

}

}


publicPersonDAOgetPersonDAO()...{
//CloudscapeCustomerDAOimplementsCustomerDAO
returnnewMysqlPersonDAO();
}


}


dao接口PersonDAO.java如下:
importjava.util.Collection;

importjavax.sql.RowSet;

publicinterfacePersonDAO...{
publicintinsertPerson(Stringpname);
publicbooleandeletePerson(intpid);
publicPersonfindPerson(intpid);
publicbooleanupdatePerson(Personp);
//publicRowSetselectCustomersRS();
publicCollectionselectCustomersTO(Stringsql,intstartIndex,intrecordPerPage);
//...
}

执行此接口的MysqlPersonDAO.java如下:
/CloudscapeCustomerDAOimplementationofthe
//CustomerDAOinterface.Thisclasscancontainall
//CloudscapespecificcodeandSQLstatements.
//Theclientisthusshieldedfromknowing
//theseimplementationdetails.

//importjava.sql.*;
importjava.sql.Connection;
importjava.sql.ResultSet;
importjava.sql.SQLException;
importjava.sql.Statement;
importjava.util.ArrayList;
importjava.util.Collection;

//importjavax.sql.RowSet;

publicclassMysqlPersonDAOimplements
PersonDAO
...{

privateinttotalPerson=0;

publicintgetTotalPerson()...{
returntotalPerson;
}


publicvoidsetTotalPerson(inttotalPerson)...{
this.totalPerson=totalPerson;
}


publicMysqlPersonDAO()...{
//initialization
}


//Thefollowingmethodscanuse
//CloudscapeDAOFactory.createConnection()
//togetaconnectionasrequired

publicintinsertPerson(Stringpname)...{
//Implementinsertcustomerhere.
//Returnnewlycreatedcustomernumber
//ora-1onerror
return0;
}


publicbooleandeletePerson(intpid)...{
//Implementdeletecustomerhere
//Returntrueonsuccess,falseonfailure
returnfalse;
}


publicPersonfindPerson(intpid)...{
//Implementfindacustomerhereusingsupplied
//argumentvaluesassearchcriteria
//ReturnaTransferObjectiffound,
//returnnullonerrororifnotfound
returnnull;
}


publicbooleanupdatePerson(Personp)...{
//implementupdaterecordhereusingdata
//fromthecustomerDataTransferObject
//Returntrueonsuccess,falseonfailureor
//error
returnfalse;
}


//publicRowSetselectCustomersRS(){
//implementsearchcustomershereusingthe
//suppliedcriteria.
//ReturnaRowSet.
//returnnull;
//}

publicCollectionselectCustomersTO(Stringsql,intstartIndex,intrecordPerPage)...{
//implementsearchcustomershereusingthe
//suppliedcriteria.
//Alternatively,implementtoreturnaCollection
//ofTransferObjects.
ArrayListpList=newArrayList();
Connectionconn
=null;
Statementstmt
colo
分享到:
评论

相关推荐

    Struts + DAO分页

    Struts + DAO分页Struts + DAO分页Struts + DAO分页Struts + DAO分页Struts + DAO分页Struts + DAO分页Struts + DAO分页Struts + DAO分页

    jsp使用DAO设计模式分页

    本主题将深入探讨如何在JSP中利用DAO设计模式实现分页功能。 分页技术在Web开发中至关重要,它允许用户浏览大量的数据而不会感到压力,提高了用户体验。在Java环境中,我们通常使用Servlet和JSP结合DAO模式来处理...

    Struts + DAO分页笔记

    在Java Web开发中,Struts框架常常被用来构建MVC(Model-View-Controller)架构的应用程序,而DAO(Data Access Object)模式则用于数据库访问层,以分离业务逻辑和数据操作。当我们需要处理大量数据时,分页功能是...

    李兴华 DAO设计模式 实现 增删改查 分页查询 完整代码

    在这个“李兴华 DAO设计模式 实现 增删改查 分页查询 完整代码”项目中,我们将探讨DAO模式如何应用于实现数据库的CRUD(创建、读取、更新、删除)操作以及分页查询。 1. DAO设计模式基础: DAO设计模式的核心是...

    Struts + DAO实现基本分页

    **Struts分页的核心组件:** 1. **Action类**:作为控制器,接收用户的请求,根据请求参数决定需要显示哪一页的数据,并调用DAO来获取数据。 2. **ActionForm**:用于封装用户请求的参数,比如当前页数、每页显示...

    struts+dao分页

    在这个场景中,"struts+dao分页"指的是利用Struts框架来处理用户请求,并通过DAO模式来实现数据库查询的分页功能。下面将详细介绍这两个概念以及如何在实际项目中实现分页。 Struts是Apache软件基金会下的一个开源...

    DAO设计模式(工厂+代理)

    DAO(Data Access Object)设计模式是一种在软件工程中常见的用于处理数据访问的模式,它将业务逻辑和数据访问逻辑分离,使得系统更加模块化,提高了代码的可复用性和可测试性。在这个“DAO设计模式(工厂+代理)”...

    李兴华DAO设计模式

    DAO(Data Access Object)设计模式是一种在软件开发中用于封装对数据库操作的模式,它将数据访问逻辑与业务逻辑分离,使得系统更易于维护和扩展。在这个设计模式中,DAO作为数据层,提供了对数据库的一系列原子性...

    Struts_DAO 实现分页

    总的来说,"Struts_DAO 实现分页"是Java Web开发中的一个常见需求,通过合理的设计和实现,可以提高应用的性能和用户体验。在实际项目中,还需要考虑如何优化查询效率,处理分页状态的持久化,以及在并发环境下确保...

    JSP+Servlet+AJAX的dao设计模式

    **JSP+Servlet+AJAX DAO设计模式详解** 在Web开发中,DAO(Data Access Object)设计模式是一种常用的设计模式,用于将业务逻辑与数据访问层进行解耦,提高代码的可维护性和可复用性。本篇我们将深入探讨如何在JSP...

    DAO模式与分页显示

    DAO(Data Access Object)模式是软件开发中常用的一种设计模式,主要用于封装对数据库的操作,将数据访问层与业务逻辑层分离,以实现更清晰的代码结构和更好的可维护性。在DAO模式中,我们通常创建一个接口来定义...

    基于MVC的论坛(用到struts+dao设计模式)

    本项目“基于MVC的论坛”便是这种设计理念的体现,它结合了Struts框架和DAO(Data Access Object)设计模式,为用户提供了一个高效且易于管理的讨论平台。 ### MVC设计模式 1. **Model(模型)**:模型层负责业务...

    WEB开发经典之 DAO设计模式

    **DAO设计模式详解** 在Web开发中,DAO(Data Access Object)设计模式是一种常见的用于分离业务逻辑层与数据访问层的架构模式。DAO的主要目的是为了提供一个统一的接口,使得业务逻辑组件可以与数据库交互而无需...

    Struts + DAO分页 的视频和实例

    在此,我们将深入探讨Struts框架如何与DAO模式结合实现分页功能。 Struts是一个开源的MVC(Model-View-Controller)框架,它简化了Java Servlet和JSP的应用程序开发。通过将业务逻辑、数据访问和用户界面进行分离,...

    初步认识JAVA+DAO设计模式.pdf

    JAVA+DAO 设计模式详解 在软件开发中,数据持久化是一个非常重要的步骤,特别是在WEB应用程序中。为了解决数据持久化的问题,开发者通常会采用各种设计模式,其中DAO(Data Access Object)设计模式是一个非常流行...

    初步认识JAVA DAO设计模式

    DAO(Data Access Object)设计模式是一种在Java编程中常见的用于处理数据访问的模式,它将业务逻辑组件与数据访问逻辑分离,提供了一种抽象层,使得应用代码与具体的数据存储方式解耦。DAO模式的核心思想是创建一个...

    AJAX+Struts+简单DAO工厂模式分页源代码

    -AJAX整合Struts无刷新分页.IE和FireFox都能运行 -在Eclipse3.1+MyEclipse4.3+TomCat5.5.12下测试通过 -在Eclipse3.3+MyEclipse6.0.1+TomCat5.5.15下测试通过 -注释详细 -希望初学者能有所收获,高手...

    Struts+DAO登陆Struts+DAO登陆

    为了提升系统的可扩展性和安全性,采用Struts+DAO模式是一种较为成熟的方法。 #### 二、Struts+DAO简介 **Struts**是一款基于Java的开源MVC框架,它将Web应用分为模型、视图和控制器三部分,有助于提高代码的复用...

Global site tag (gtag.js) - Google Analytics