`
gstarwd
  • 浏览: 1489227 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

在DAO设计模式中使用工厂设计

阅读更多

工厂设计:
    使用工厂设计,使前台不用知道具体子类是谁,是前台显示与后台逻辑操作分离,便于修改。

实例:在DAO设计模式中加入工厂设计

DAOFactory.java:使用工厂设计设置子类

view source
<embed id="highlighter_772179_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_772179" menu="false"></embed>
print ?
01. package  mgc.dao.factory;
02.  
03. import  mgc.dao.test.*;
04. import  mgc.dao.test.impl.*;
05. public  class  DAOFactory {
06.      public  static  MemberDAO getMemberDAOInstance() {
07.          return  new  MemberDAOImpl();
08.      }
09. }



MemberDAO.java:数据库操作接口类

view source
<embed id="highlighter_76257_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_76257" menu="false"></embed>
print ?
01. package  mgc.dao.test;
02.  
03. import  java.util.*;
04. import  mgc.dao.vo.*;
05. //规定操作member表的全部方法
06. public  interface  MemberDAO {
07.      //插入数据
08.      public  void  insert(Member member)  throws  Exception;
09.      //修改数据
10.      public  void  update(Member member)  throws  Exception;
11.      //删除数据
12.      public  void  delete( int  id)  throws  Exception;
13.      //按ID查询
14.      public  Member queryById( int  id)  throws  Exception;
15.      //全部查询
16.      public  List queryAll()  throws  Exception;
17. }



Member.java:VO对象类

view source
<embed id="highlighter_308880_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_308880" menu="false"></embed>
print ?
01. package  mgc.dao.vo;
02.  
03. public  class  Member {
04.      private  int  id;
05.      private  String username;
06.      private  String password;
07.       
08.      public  void  setId( int  id){
09.          this .id=id;
10.      }
11.      public  void  setUsername(String username){
12.          this .username=username;
13.      }
14.      public  void  setPassword(String password){
15.          this .password=password;
16.      }
17.      public  int  getId(){
18.          return  this .id;
19.      }
20.      public  String getUsername(){
21.          return  this .username;
22.      }
23.      public  String getPassword(){
24.          return  this .password;
25.      }
26. }



DatabaseConnection.java:数据库连接类

view source
<embed id="highlighter_592693_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_592693" menu="false"></embed>
print ?
01. package  mgc.dao.test.dbc;
02.  
03. import  java.sql.*;
04.  
05. public  class  DataBaseConnection {
06.       
07.      private  final  String DBDRIVER= "sun.jdbc.odbc.JdbcOdbcDriver" ;
08.      private  final  String DBURL= "jdbc:odbc:member" ;
09.      private  Connection conn= null ;
10.       
11.      public  DataBaseConnection() {
12.          try {
13.              Class.forName(DBDRIVER);
14.              this .conn=DriverManager.getConnection(DBURL);
15.          }
16.          catch (Exception e){}
17.      }
18.       
19.      public  Connection getConnection() {
20.          return  this .conn;
21.      }
22.       
23.      public  void  close() {
24.          try {
25.              this .conn.close();
26.          }
27.          catch (Exception e){}
28.      }
29. }



MemberDAOImpl.java:数据库操作类

 
001. package  mgc.dao.test.impl;
002.  
003. import  java.util.*;
004. import  java.sql.*;
005. import  mgc.dao.vo.*;
006. import  mgc.dao.test.*;
007. import  mgc.dao.test.dbc.*;
008.  
009. public  class  MemberDAOImpl  implements  MemberDAO {
010.       
011.      //插入数据
012.      public  void  insert(Member member)  throws  Exception {
013.          String sql= "Insert INTO member (username,password) VALUES (?,?)" ;
014.          PreparedStatement pstmt= null ;
015.          DataBaseConnection dbc= null ;
016.          try {
017.              //连接数据库
018.              dbc= new  DataBaseConnection();
019.              pstmt=dbc.getConnection().prepareStatement(sql);
020.              pstmt.setString( 1 , member.getUsername());
021.              pstmt.setString( 2 , member.getPassword());
022.              //操作数据库
023.              pstmt.executeUpdate();
024.              pstmt.close();
025.          }
026.          catch (Exception e) {
027.              throw  new  Exception(e);
028.          }
029.          finally {
030.              //关闭数据库
031.              dbc.close();
032.          }
033.      }
034.       
035.      //修改操作
036.      public  void  update(Member member)  throws  Exception {
037.          String sql= "Update  member SET username=?,password=? Where ID=?" ;
038.          PreparedStatement pstmt= null ;
039.          DataBaseConnection dbc= null ;
040.          try {
041.              //连接数据库
042.              dbc= new  DataBaseConnection();
043.              pstmt=dbc.getConnection().prepareStatement(sql);
044.              pstmt.setString( 1 , member.getUsername());
045.              pstmt.setString( 2 , member.getPassword());
046.              pstmt.setInt( 3 ,member.getId());
047.              //操作数据库
048.              pstmt.executeUpdate();
049.              pstmt.close();
050.          }
051.          catch (Exception e) {
052.              throw  new  Exception(e);
053.          }
054.          finally {
055.              //关闭数据库
056.              dbc.close();
057.          }
058.      }
059.       
060.      public  void  delete( int  id)  throws  Exception {
061.          String sql= "Delete FROM member Where ID=?" ;
062.          PreparedStatement pstmt= null ;
063.          DataBaseConnection dbc= null ;
064.           
065.          try {
066.              //连接数据库
067.              dbc= new  DataBaseConnection();
068.              pstmt=dbc.getConnection().prepareStatement(sql);
069.              pstmt.setInt( 1 , id);
070.              //操作数据库
071.              pstmt.executeUpdate();
072.              pstmt.close();
073.          }
074.          catch (Exception e) {
075.              throw  new  Exception(e);
076.          }
077.          finally {
078.              //关闭数据库
079.              dbc.close();
080.          }
081.      }
082.       
083.      public  Member queryById( int  id)  throws  Exception {
084.          String sql= "Select * FROM member Where ID=?" ;
085.          PreparedStatement pstmt= null ;
086.          DataBaseConnection dbc= null ;
087.          ResultSet rs= null ;
088.          Member member= null ;
089.          try {
090.              //连接数据库
091.              dbc= new  DataBaseConnection();
092.              pstmt=dbc.getConnection().prepareStatement(sql);
093.              pstmt.setInt( 1 , id);
094.              //操作数据库
095.              rs=pstmt.executeQuery();
096.              if (rs.next()) {
097.                  //将查询结果保存在Member对象中
098.                  member= new  Member();
099.                  member.setUsername(rs.getString( "username" ));
100.                  member.setPassword(rs.getString( "password" ));
101.              }
102.              rs.close();
103.              pstmt.close();
104.          }
105.          catch (Exception e) {
106.              throw  new  Exception(e);
107.          }
108.          finally {
109.              //关闭数据库
110.              dbc.close();
111.          }
112.          return  member;
113.      }
114.       
115.      public  List queryAll()  throws  Exception {
116.          String sql= "Select * FROM member" ;
117.          PreparedStatement pstmt= null ;
118.          DataBaseConnection dbc= null ;
119.          ResultSet rs= null ;
120.          List all= new  ArrayList();
121.          try {
122.              //连接数据库
123.              dbc= new  DataBaseConnection();
124.              pstmt=dbc.getConnection().prepareStatement(sql);
125.              //操作数据库
126.              rs=pstmt.executeQuery();
127.              while (rs.next()) {
128.                  //将查询结果保存在Member对象中
129.                  Member member= new  Member();
130.                  member.setUsername(rs.getString( "username" ));
131.                  member.setPassword(rs.getString( "password" ));
132.                  all.add(member);
133.              }
134.              rs.close();
135.              pstmt.close();
136.          }
137.          catch (Exception e) {
138.              throw  new  Exception(e);
139.          }
140.          finally {
141.              //关闭数据库
142.              dbc.close();
143.          }
144.          return  all;
145.      }
146. }



dao.jsp:前台显示页面

view source
<embed id="highlighter_126215_clipboard" title="copy to clipboard" type="application/x-shockwave-flash" width="16" height="16" src="http://mgc.ahau.edu.cn/common/SyntaxHighlighter/scripts/clipboard.swf" allowscriptaccess="always" wmode="transparent" flashvars="highlighterId=highlighter_126215" menu="false"></embed>
print ?
01. <%@page contentType="text/html;charset=GB2312" %>
02. <%@page import="java.util.*" %>
03. <%@page import="mgc.dao.factory.*" %>
04. <%@page import="mgc.dao.test.impl.*" %>
05. <%@page import="mgc.dao.vo.*" %>
06. < html >
07.    < head >

相关推荐

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

    用简单易懂的例子说明DAO设计模式(附带sql脚本,mysql数据库)

    J2EE之DAO设计模式

    DAO设计模式可以通过采用抽象工厂和工厂方法模式来变得非常的灵活. 当底层数据存储实现不需要发生改变时,该策略可以使用工厂方法设计模式实现,来产生应用中所需的DAO. 当底层数据储存实现不得不发生变化的时候, ...

    JavaEE技术-DAO设计模式

    JavaEE技术-DAO设计模式:DAO接口,DAO实现类,DAO工厂类,VO类,数据库连接类。

    工厂模式dao模式操作数据库小例子

    工厂模式dao模式操作数据库小例子 本例子适合刚学完java一点基础部分,想利用下工厂模式还有dao设计模式简单操作数据库的看一下

    dao设计模式(1)

    本文主要讲解当前流行的J2EE设计模式——DAO设计模式,包括接口的设计、工厂设计模式的应用,重点阐述的是J2EE中层的概念

    工厂模式很DAO模式实现购物车

    JAVA编写的购物车,能够打印出商品的数量,单价和总价,使用了工厂模式和DAO模式。对初学者有很好的帮助

    java设计模式:DAO模式.doc

    java设计模式:DAO模式 DAO设计模式 DAO的理解 1、DAO其实是利用组合工厂模式来解决问题的,并没有带来新的功能,所以学的 其实就是个思路。 2、DAO理论上是没有层数限制的。 3、DAO的各层理论上是没有先后的。 DAO...

    DAO抽象工厂

    DAO抽象工厂

    设计模式实验报告.rar

    包含策略模式,单件模式,迭代器与组合模式,工厂模式,观察者模式,命令模式,适配器与外观模式,装饰者模式的问题描述,类图,源码,运行截图。

    用Java实现23种设计模式

    用Java实现23种设计模式 1. 创建型模式 工厂模式(Factory Pattern) 抽象工厂模式(Abstract Factory Pattern) 单例模式(Singleton Pattern) 建造者模式(Builder Pattern) 原型模式(Prototype Pattern)...

    JavaEE常用设计模式

    JavaEE常用设计模式,MVC、DAO、工厂等等

    java设计模式&java程序设计

    java设计模式,pdf版。包括常用到的单例,工厂,dao,vo等设计模式。

    java设计模式CatalogDAOFactory是典型的工厂方法

    工厂模式是我们最常用的模式了,著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见。 为什么工厂模式是如此常用?因为工厂模式就相当于创建实例对象的new,我们经常要根据类Class生成...

    spring中的基本设计模式

    数据访问对象模式(DAO) 工厂模式(factory) 模型视图控制器模式(MVC) 代理模式(proxy) 单例模式(singleton) 策略模式(strategy) 模板模式(template) 另外还有一个关于动态代理的小例子

    二十三种设计模式【PDF版】

    为能和大家能共同探讨"设计模式",我将自己在学习中的心得写下来,只是想帮助更多人更容易理解 GoF 的《设计模式》。由 于原著都是以C++为例, 以Java为例的设计模式基本又都以图形应用为例,而我们更关心Java在中间件等...

    简单工厂模式

    这也是一种常用的设计模式,在DAO设计模式中也被使用到,此模式值得我们学习。

    JAVA实现excel的导出.zip

    用Java语言采用接口设计模式、代理设计模式、工厂设计模式实现对excel中的表实现基本的...使用Java内置的poi jar包实现excel的操作,使用工厂模式、DAO设计模式等,思想很简单,可供设计模式参考,包括代码+文档+jar包

    JSP+JavaBean+DAO+面向接口编程+工厂模式实现对数据增删改查

    一、项目前准备工作 1、eclipse 或者myeclipse 都可以 2、数据库(Oracle或者mysql或者其他也可以) 3、了解Javaweb相关知识 ...在dao下新建一个DBConn类用来处理对数据进行连接。 我使用的是Oracle数据

    Java语言实现Excel的导出

    使用Java内置的poi jar包实现excel的操作,使用工厂模式、DAO设计模式等,思想很简单,可供设计模式参考,包括代码

    Java_JDBC由浅入深

    7.4 DAO设计模式与工厂模式的整合 49 7.5 DAO设计模式测试 52 第八节 JDBC对事务的支持 52 8.1 模拟转账 53 8.2 jdbc默认事务 54 8.3 事务提交与回滚 54 8.4 设置保存点 55 8.5 JTA事务的介绍 56 8.6 数据库的隔离...

Global site tag (gtag.js) - Google Analytics