国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

JavaBean中DAO設計模式簡介

2019-11-14 15:36:52
字體:
來源:轉載
供稿:網友

一、信息系統的開發架構


客戶層-------顯示層-------業務層---------數據層---------數據庫

1.客戶層:客戶層就是客戶端,簡單的來說就是瀏覽器。

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

3.業務層:對于數據層的原子操作進行整合

4.數據層:對于數據庫進行的原子操作,增加、刪除等;


二、DAO(Data access Object)介紹


DAO應用在數據層那塊,用于訪問數據庫,對數據庫進行操作的類。


三、DAO設計模式的結構


DAO設計模式一般分為幾個類:

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

2.DatabaseConnection:用于打開和關閉數據庫。

3.DAO接口:用于聲明對于數據庫的操作。

4.DAOImpl:必須實現DAO接口,真實實現DAO接口的函數,但是不包括數據庫的打開和關閉。

5.DAOPRoxy:也是實現DAO接口,但是只需要借助DAOImpl即可,但是包括數據庫的打開和關閉。

6.DAOFactory:工廠類,含有getInstance()創建一個Proxy類。


四、DAO的好處


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


五、DAO包命名


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


六、實例解析


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   連接數據庫操作

[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   接口的實現類

[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   數據庫開關

[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);              }          }      }  

 


通過DAO設計模式,可以在JSP中屏蔽了數據庫連接的操作,達到JSP只負責顯示的效果。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆良县| 新巴尔虎右旗| 太谷县| 绩溪县| 鹤峰县| 乌鲁木齐市| 白玉县| 甘洛县| 甘德县| 高要市| 滦南县| 红河县| 明水县| 黄龙县| 肥东县| 重庆市| 福建省| 和龙市| 新余市| 邵阳市| 定结县| 任丘市| 正宁县| 鹤岗市| 拜城县| 肥东县| 遵义县| 民勤县| 温宿县| 新巴尔虎左旗| 奎屯市| 台山市| 林芝县| 夏津县| 舟山市| 华坪县| 湘潭县| 宁晋县| 乌兰县| 东乡县| 台湾省|