DAO设计模式&&struts分页

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

程序实例如下:

首先用mysql创建一个person表,sql语句为:
create table person
(
pid
int auto_increment,
pname
varchar ( 20 ),
primary key (pid)
);

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

dao工厂类DAOFactory.java如下:
/ Abstract class DAOFactory
public abstract class DAOFactory ... {

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

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

publicstaticDAOFactorygetDAOFactory(
intwhichFactory)...{

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

}

}

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

public class MysqlDAOFactory extends DAOFactory ... {
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如下:
import java.util.Collection;

import javax.sql.RowSet;

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

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

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

// importjavax.sql.RowSet;

public class MysqlPersonDAO implements
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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值