麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

JavaBean中DAO設(shè)計(jì)模式簡(jiǎn)介

2019-11-14 15:36:52
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

一、信息系統(tǒng)的開(kāi)發(fā)架構(gòu)


客戶層-------顯示層-------業(yè)務(wù)層---------數(shù)據(jù)層---------數(shù)據(jù)庫(kù)

1.客戶層:客戶層就是客戶端,簡(jiǎn)單的來(lái)說(shuō)就是瀏覽器。

2.顯示層:jsp/Servlet,用于給瀏覽器顯示。

3.業(yè)務(wù)層:對(duì)于數(shù)據(jù)層的原子操作進(jìn)行整合

4.數(shù)據(jù)層:對(duì)于數(shù)據(jù)庫(kù)進(jìn)行的原子操作,增加、刪除等;


二、DAO(Data access Object)介紹


DAO應(yīng)用在數(shù)據(jù)層那塊,用于訪問(wèn)數(shù)據(jù)庫(kù),對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作的類。


三、DAO設(shè)計(jì)模式的結(jié)構(gòu)


DAO設(shè)計(jì)模式一般分為幾個(gè)類:

1.VO(Value Object):一個(gè)用于存放網(wǎng)頁(yè)的一行數(shù)據(jù)即一條記錄的類,比如網(wǎng)頁(yè)要顯示一個(gè)用戶的信息,則這個(gè)類就是用戶的類。

2.DatabaseConnection:用于打開(kāi)和關(guān)閉數(shù)據(jù)庫(kù)。

3.DAO接口:用于聲明對(duì)于數(shù)據(jù)庫(kù)的操作。

4.DAOImpl:必須實(shí)現(xiàn)DAO接口,真實(shí)實(shí)現(xiàn)DAO接口的函數(shù),但是不包括數(shù)據(jù)庫(kù)的打開(kāi)和關(guān)閉。

5.DAOPRoxy:也是實(shí)現(xiàn)DAO接口,但是只需要借助DAOImpl即可,但是包括數(shù)據(jù)庫(kù)的打開(kāi)和關(guān)閉。

6.DAOFactory:工廠類,含有g(shù)etInstance()創(chuàng)建一個(gè)Proxy類。


四、DAO的好處


DAO的好處就是提供給用戶的接口只有DAO的接口,所以如果用戶想添加數(shù)據(jù),只需要調(diào)用create函數(shù)即可,不需要數(shù)據(jù)庫(kù)的操作。


五、DAO包命名


對(duì)于DAO,包的命名和類的命名一定要有層次。


六、實(shí)例解析


1.Emp.java   VO類

[java] view plaincopy    package org.vo;      import java.util.*;      public class Emp{          private int empno;          private String ename;          private String job;          private Date hireDate;          private float sal;          public Emp(){                        }          public int getEmpno(){              return empno;          }          public void setEmpno(int empno){              this.empno = empno;          }          public String getEname(){              return ename;          }          public void setEname(String ename){              this.ename = ename;          }          public Date getHireDate(){              return hireDate;          }          public void setHireDate(Date hireDate){              this.hireDate = hireDate;          }          public float getSal(){              return sal;          }          public void setSal(float sal){              this.sal = sal;          }          public String getJob(){              return job;          }          public void setJob(String job){              this.job = job;          }      }  

 

2.DatabaseConnection.java   連接數(shù)據(jù)庫(kù)操作

[java] view plaincopy
    package org.dbc;      import java.sql.*;      public class DatabaseConnection{          private Connection con = null;          private static final String DRIVER = "com.MySQL.jdbc.Driver";          private static final String USER = "root";          private static final String URL = "jdbc:mysql://localhost:3306/mldn";          private static final String PASS = "12345";          public DatabaseConnection()throws Exception{              Class.forName(DRIVER);              con = DriverManager.getConnection(URL,USER,PASS);          }          public Connection getConnection()throws Exception{              return con;          }          public void close()throws Exception{              if(con!=null){                  con.close();              }          }      }  

 

3.IEmpDAO.java   dao接口

[java] view plaincopy
    package org.dao;      import java.util.List;      import org.vo.*;      public interface IEmpDAO{          public boolean doCreate(Emp emp)throws Exception;          public List<Emp> findAll()throws Exception;          public Emp findById(int empno)throws Exception;      }  

 

4.EmpDAOImpl.java   接口的實(shí)現(xiàn)類

[java] view plaincopy
    package org.dao.impl;      import org.dao.*;      import java.sql.*;      import org.vo.*;      import java.util.*;      public class EmpDAOImpl implements IEmpDAO{          private Connection con;          private PreparedStatement stat = null;          public EmpDAOImpl(Connection con){              this.con = con;          }          public boolean doCreate(Emp emp)throws Exception{              String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES(?,?,?,?,?)";              stat = con.prepareStatement(sql);              stat.setInt(1,emp.getEmpno());              stat.setString(2,emp.getEname());              stat.setString(3,emp.getJob());              stat.setDate(4,new java.sql.Date(emp.getHireDate().getTime()));              stat.setFloat(5,emp.getSal());              int update = stat.executeUpdate();              if(update>0){                  return true;              }              else{                  return false;              }          }          public List<Emp> findAll()throws Exception{              String sql = "SELECT empno,ename,job,hiredate,sal FROM emp";              stat = con.prepareStatement(sql);              ResultSet rs = stat.executeQuery();              Emp emp = null;              List<Emp> list = new ArrayList<Emp>();              while(rs.next()){                  int empno = rs.getInt(1);                  String ename = rs.getString(2);                  String job = rs.getString(3);                  float sal = rs.getFloat(5);                  emp = new Emp();                  emp.setEmpno(empno);                  emp.setEname(ename);                  emp.setJob(job);                  emp.setHireDate(rs.getDate(4));                  emp.setSal(sal);                  list.add(emp);              }              return list;          }          public Emp findById(int empno)throws Exception{              String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno=?";              stat = con.prepareStatement(sql);              stat.setInt(1,empno);              ResultSet rs = stat.executeQuery();              Emp emp = null;              if(rs.next()){                  String ename = rs.getString(2);                  String job = rs.getString(3);                  float sal = rs.getFloat(5);                  emp = new Emp();                  emp.setEmpno(empno);                  emp.setEname(ename);                  emp.setJob(job);                  emp.setHireDate(rs.getDate(4));                  emp.setSal(sal);              }              return emp;          }      }  

 


5.EmpDAOProxy.java   數(shù)據(jù)庫(kù)開(kāi)關(guān)

[java] view plaincopy
    package org.dao.impl;      import org.dao.*;      import java.sql.*;      import org.vo.*;      import java.util.*;      import org.dbc.*;      public class EmpDAOProxy implements IEmpDAO{          private DatabaseConnection dbc;          private IEmpDAO dao = null;          public EmpDAOProxy()throws Exception{              dbc = new DatabaseConnection();              dao = new EmpDAOImpl(dbc.getConnection());          }          public boolean doCreate(Emp emp)throws Exception{              boolean flag = false;              if(dao.findById(emp.getEmpno())==null){                  flag = dao.doCreate(emp);              }              dbc.close();              return flag;          }          public List<Emp> findAll()throws Exception{              List<Emp>list = dao.findAll();              dbc.close();              return list;          }          public Emp findById(int empno)throws Exception{              Emp emp = dao.findById(empno);              dbc.close();              return emp;          }      }  

 

6.DAOFactory.java  工廠類

[java] view plaincopy
    package org.dao.factory;      import org.dao.*;      import java.sql.*;      import org.vo.*;      import java.util.*;      import org.dbc.*;      import org.dao.impl.*;      public class DAOFactory{          public static IEmpDAO getInstance(){              IEmpDAO dao = null;              try{                  dao = new EmpDAOProxy();                  }              catch(Exception e){                  e.printStackTrace();              }              return dao;          }      }  

 


7.TestDAO.java

[java] view plaincopy
    package org.dao.test;      import org.dao.factory.*;      import org.vo.*;      import org.dao.*;      public class TestDAO{          public static void main(String args[])throws Exception{              Emp emp = null;              for(int i=0;i<5;i++){                  emp = new Emp();                  emp.setEmpno(i);                  emp.setEname("xiazdong-"+i);                  emp.setJob("stu-"+i);                  emp.setHireDate(new java.util.Date());                  emp.setSal(500*i);                  DAOFactory.getInstance().doCreate(emp);              }          }      }  

 


通過(guò)DAO設(shè)計(jì)模式,可以在JSP中屏蔽了數(shù)據(jù)庫(kù)連接的操作,達(dá)到JSP只負(fù)責(zé)顯示的效果。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 一级免费大片 | 日本aaaa片毛片免费观看视频 | 暴力强行进如hdxxx | 日韩黄色片在线观看 | 777午夜精品视频在线播放 | 依依成人精品视频 | 2021免费日韩视频网 | 福利在线免费视频 | 欧美成人自拍 | 嗯啊羞羞视频 | 日韩三级伦理在线观看 | 羞羞视频免费网站日本动漫 | 国产精品午夜未成人免费观看 | 免费黄色在线观看网站 | 国产91片 | 鲁丝片一区二区三区免费入口 | 狠狠干最新网址 | 精品日韩欧美 | 欧美日韩免费在线观看视频 | 国产精品久久久久久久久久 | 国产精品久久久久久久久久大牛 | 国产精品久久久久久婷婷天堂 | 久久国产精品免费视频 | 亚洲一区二区三区精品在线观看 | 国产精品伊人久久 | 久草在线新时代视觉 | 国产一区二区在线免费播放 | 久久久久一区二区三区 | 亚洲成人福利电影 | 九九热精品在线 | 久久影院免费观看 | 久久在现视频 | 成人免费网站在线观看视频 | 露脸各种姿势啪啪的清纯美女 | 欧美巨根 | 成人免费在线观看视频 | 成年人黄色免费电影 | 7m视频成人精品分类 | 羞羞网站入口 | 久久精品亚洲成在人线av网址 | 成人一级视频 |