DAo设计模式1Word文件下载.docx

上传人:b****1 文档编号:15291110 上传时间:2022-10-29 格式:DOCX 页数:17 大小:239.98KB
下载 相关 举报
DAo设计模式1Word文件下载.docx_第1页
第1页 / 共17页
DAo设计模式1Word文件下载.docx_第2页
第2页 / 共17页
DAo设计模式1Word文件下载.docx_第3页
第3页 / 共17页
DAo设计模式1Word文件下载.docx_第4页
第4页 / 共17页
DAo设计模式1Word文件下载.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

DAo设计模式1Word文件下载.docx

《DAo设计模式1Word文件下载.docx》由会员分享,可在线阅读,更多相关《DAo设计模式1Word文件下载.docx(17页珍藏版)》请在冰豆网上搜索。

DAo设计模式1Word文件下载.docx

xxx.factory.DAOFactory

DAO开发

DAO的开发完全围绕数据库进行,使用如下表

数据库创建脚本:

/*=======================删除数据库=======================*/

DROPDATABASEIFEXISTShbmu;

/*=======================创建数据库=======================*/

CREATEDATABASEhbmu;

/*=======================使用数据库=======================*/

USEhbmu;

/*=======================删除数据表=======================*/

DROPTABLEIFEXISTSemp;

/*=======================创建数据表=======================*/

CREATETABLEemp(

empnoINT(4)PRIMARYKEY,

enameVARCHAR(10),

jobVARCHAR(9),

hiredateDATE,

salFLOAT(7,2)

);

首先定义VO类,VO类的名称与表的名称一致,但是要注意类的命名规范---单词的开头首字母大写:

定义对应的VO类----Emp.java

packagecn.edu.hbmu.vo;

importjava.util.Date;

publicclassEmp{

privateintempno;

privateStringename;

privateStringjob;

privateDatehiredate;

privatefloatsal;

publicintgetEmpno(){

returnempno;

}

publicvoidsetEmpno(intempno){

this.empno=empno;

publicStringgetEname(){

returnename;

publicvoidsetEname(Stringename){

this.ename=ename;

publicStringgetJob(){

returnjob;

publicvoidsetJob(Stringjob){

this.job=job;

publicDategetHiredate(){

returnhiredate;

publicvoidsetHiredate(Datehiredate){

this.hiredate=hiredate;

publicfloatgetSal(){

returnsal;

publicvoidsetSal(floatsal){

this.sal=sal;

}

}

简单的VO类,定义了属性、getter、setter方法。

日期使用的是java.util.Date;

定义

数据库连接类------DatabaseConnection.java

packagecn.edu.hbmu.dbc;

importjava.sql.Connection;

importjava.sql.DriverManager;

importjava.sql.SQLException;

publicclassDatabaseConnection{

privatestaticfinalStringDBDRIVER="

org.gjt.mm.mysql.Driver"

;

privatestaticfinalStringDBURL="

jdbc:

mysql:

//localhost:

3306/hbmu"

privatestaticfinalStringDBUSER="

root"

privatestaticfinalStringDBPASSWORD="

123"

privateConnectionconn;

publicDatabaseConnection()throwsException{

Class.forName(DBDRIVER);

this.conn=DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD);

publicConnectiongetConnection(){

returnthis.conn;

publicvoidclose()throwsException{

if(this.conn!

=null){

try{

this.conn.close();

}catch(Exceptione){

throwe;

}

在执行数据库连接和关闭中,由于可能出现意外情况而导致无法操作成功时,所有的异常将统一交给调用处处理。

如果要适用不同的数据库,可以将可能变化的地方听过接口实现,然后根据不同的数据库定义不同的子类,通过工厂类完成调用

DAO接口DAO接口:

packagecn.edu.hbmu.dao;

importjava.util.List;

importcn.edu.hbmu.vo.Emp;

publicinterfaceIEmpDAO{

/**

*数据的增加操作,一般以doXxx的方式命名

*@paramemp要增加的数据对象

*@return是否增加成功的标记

*@throwsException有异常交给被调用处处理

*/

publicbooleandoCreate(Empemp)throwsException;

*查询全部的数据(多条记录),一般以findXxx的方式命名或getXxx

*@paramkeyWord查询关键字

*@return返回全部的查询结果,每一个Emp对象表示表的一行记录

publicList<

Emp>

findAll(StringkeyWord)throwsException;

*根据雇员编号查询雇员信息

*@paramempno雇员编号

*@return雇员的VO对象

publicEmpfindById(intempno)throwsException;

DAO接口定义完成后需要具体的实现类,有两种:

1.真实实现类

2.代理实现类

DAO接口真实实现类:

真实实现类主要负责具体的数据库操作,在操作时为了性能和安全使用PreparedStatement接口完成。

packagecn.hbmu.edu.dao.impl;

importjava.sql.PreparedStatement;

importjava.sql.ResultSet;

importjava.util.ArrayList;

importcn.edu.hbmu.dao.IEmpDAO;

publicclassEmpDAOImplimplementsIEmpDAO{

privateConnectionconn=null;

//数据库连接对象

privatePreparedStatementpstmt=null;

//数据库操作对象

publicEmpDAOImpl(Connectionconn){//构造方法接收外部传递来的数据库连接的实例化对象

this.conn=conn;

//取得数据库连接

publicbooleandoCreate(Empemp)throwsException{

booleanflag=false;

//定义标志位

Stringsql="

insertintoemp(empno,ename,job,hiredate,sal)values(?

?

)"

;

this.pstmt=this.conn.prepareStatement(sql);

//实例化预处理对象

this.pstmt.setInt(1,emp.getEmpno());

//设置empno

this.pstmt.setString(2,emp.getEname());

this.pstmt.setString(3,emp.getJob());

this.pstmt.setDate(4,newjava.sql.Date(emp.getHiredate().getTime()));

//设置hiredate对象,PreparedStatement对象的setDate方法是用的是SQLDATEvalue,需要转换java.util.Date.getTime()

this.pstmt.setFloat(5,emp.getSal());

if(this.pstmt.executeUpdate()>

0){//更新记录的行数大于0

flag=true;

//修改标志位

}

this.pstmt.close();

//关闭PreparedStatement对象

returnflag;

findAll(StringkeyWord)throwsException{

List<

all=newArrayList<

();

//定义集合,接收全部数据

selectempno,ename,job,hiredate,salfromempwhereenamelike?

orjoblike?

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1