乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      JavaBean中DAO設(shè)計(jì)模式介紹

       昵稱27831725 2015-11-11
      分類: 【Java Web】 2011-10-21 23:29 18952人閱讀 評論(11) 收藏 舉報(bào)

      目錄(?)[+]


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


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

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

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

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

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


      二、DAO(Data Access Object)介紹


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


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


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

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

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

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

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

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

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


      四、DAO的好處


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


      五、DAO包命名


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


      六、實(shí)例解析


      1.Emp.java

      1. package org.vo;  
      2. import java.util.*;  
      3. public class Emp{  
      4.     private int empno;  
      5.     private String ename;  
      6.     private String job;  
      7.     private Date hireDate;  
      8.     private float sal;  
      9.     public Emp(){  
      10.           
      11.     }  
      12.     public int getEmpno(){  
      13.         return empno;  
      14.     }  
      15.     public void setEmpno(int empno){  
      16.         this.empno = empno;  
      17.     }  
      18.     public String getEname(){  
      19.         return ename;  
      20.     }  
      21.     public void setEname(String ename){  
      22.         this.ename = ename;  
      23.     }  
      24.     public Date getHireDate(){  
      25.         return hireDate;  
      26.     }  
      27.     public void setHireDate(Date hireDate){  
      28.         this.hireDate = hireDate;  
      29.     }  
      30.     public float getSal(){  
      31.         return sal;  
      32.     }  
      33.     public void setSal(float sal){  
      34.         this.sal = sal;  
      35.     }  
      36.     public String getJob(){  
      37.         return job;  
      38.     }  
      39.     public void setJob(String job){  
      40.         this.job = job;  
      41.     }  
      42. }  
      2.DatabaseConnection.java

      1. package org.dbc;  
      2. import java.sql.*;  
      3. public class DatabaseConnection{  
      4.     private Connection con = null;  
      5.     private static final String DRIVER = "com.mysql.jdbc.Driver";  
      6.     private static final String USER = "root";  
      7.     private static final String URL = "jdbc:mysql://localhost:3306/mldn";  
      8.     private static final String PASS = "12345";  
      9.     public DatabaseConnection()throws Exception{  
      10.         Class.forName(DRIVER);  
      11.         con = DriverManager.getConnection(URL,USER,PASS);  
      12.     }  
      13.     public Connection getConnection()throws Exception{  
      14.         return con;  
      15.     }  
      16.     public void close()throws Exception{  
      17.         if(con!=null){  
      18.             con.close();  
      19.         }  
      20.     }  
      21. }  
      3.IEmpDAO.java

      1. package org.dao;  
      2. import java.util.List;  
      3. import org.vo.*;  
      4. public interface IEmpDAO{  
      5.     public boolean doCreate(Emp emp)throws Exception;  
      6.     public List<Emp> findAll()throws Exception;  
      7.     public Emp findById(int empno)throws Exception;  
      8. }  
      4.EmpDAOImpl.java

      1. package org.dao.impl;  
      2. import org.dao.*;  
      3. import java.sql.*;  
      4. import org.vo.*;  
      5. import java.util.*;  
      6. public class EmpDAOImpl implements IEmpDAO{  
      7.     private Connection con;  
      8.     private PreparedStatement stat = null;  
      9.     public EmpDAOImpl(Connection con){  
      10.         this.con = con;  
      11.     }  
      12.     public boolean doCreate(Emp emp)throws Exception{  
      13.         String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES(?,?,?,?,?)";  
      14.         stat = con.prepareStatement(sql);  
      15.         stat.setInt(1,emp.getEmpno());  
      16.         stat.setString(2,emp.getEname());  
      17.         stat.setString(3,emp.getJob());  
      18.         stat.setDate(4,new java.sql.Date(emp.getHireDate().getTime()));  
      19.         stat.setFloat(5,emp.getSal());  
      20.         int update = stat.executeUpdate();  
      21.         if(update>0){  
      22.             return true;  
      23.         }  
      24.         else{  
      25.             return false;  
      26.         }  
      27.     }  
      28.     public List<Emp> findAll()throws Exception{  
      29.         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp";  
      30.         stat = con.prepareStatement(sql);  
      31.         ResultSet rs = stat.executeQuery();  
      32.         Emp emp = null;  
      33.         List<Emp> list = new ArrayList<Emp>();  
      34.         while(rs.next()){  
      35.             int empno = rs.getInt(1);  
      36.             String ename = rs.getString(2);  
      37.             String job = rs.getString(3);  
      38.             float sal = rs.getFloat(5);  
      39.             emp = new Emp();  
      40.             emp.setEmpno(empno);  
      41.             emp.setEname(ename);  
      42.             emp.setJob(job);  
      43.             emp.setHireDate(rs.getDate(4));  
      44.             emp.setSal(sal);  
      45.             list.add(emp);  
      46.         }  
      47.         return list;  
      48.     }  
      49.     public Emp findById(int empno)throws Exception{  
      50.         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno=?";  
      51.         stat = con.prepareStatement(sql);  
      52.         stat.setInt(1,empno);  
      53.         ResultSet rs = stat.executeQuery();  
      54.         Emp emp = null;  
      55.         if(rs.next()){  
      56.             String ename = rs.getString(2);  
      57.             String job = rs.getString(3);  
      58.             float sal = rs.getFloat(5);  
      59.             emp = new Emp();  
      60.             emp.setEmpno(empno);  
      61.             emp.setEname(ename);  
      62.             emp.setJob(job);  
      63.             emp.setHireDate(rs.getDate(4));  
      64.             emp.setSal(sal);  
      65.         }  
      66.         return emp;  
      67.     }  
      68. }  

      5.EmpDAOProxy.java

      1. package org.dao.impl;  
      2. import org.dao.*;  
      3. import java.sql.*;  
      4. import org.vo.*;  
      5. import java.util.*;  
      6. import org.dbc.*;  
      7. public class EmpDAOProxy implements IEmpDAO{  
      8.     private DatabaseConnection dbc;  
      9.     private IEmpDAO dao = null;  
      10.     public EmpDAOProxy()throws Exception{  
      11.         dbc = new DatabaseConnection();  
      12.         dao = new EmpDAOImpl(dbc.getConnection());  
      13.     }  
      14.     public boolean doCreate(Emp emp)throws Exception{  
      15.         boolean flag = false;  
      16.         if(dao.findById(emp.getEmpno())==null){  
      17.             flag = dao.doCreate(emp);  
      18.         }  
      19.         dbc.close();  
      20.         return flag;  
      21.     }  
      22.     public List<Emp> findAll()throws Exception{  
      23.         List<Emp>list = dao.findAll();  
      24.         dbc.close();  
      25.         return list;  
      26.     }  
      27.     public Emp findById(int empno)throws Exception{  
      28.         Emp emp = dao.findById(empno);  
      29.         dbc.close();  
      30.         return emp;  
      31.     }  
      32. }  
      6.DAOFactory.java

      1. package org.dao.factory;  
      2. import org.dao.*;  
      3. import java.sql.*;  
      4. import org.vo.*;  
      5. import java.util.*;  
      6. import org.dbc.*;  
      7. import org.dao.impl.*;  
      8. public class DAOFactory{  
      9.     public static IEmpDAO getInstance(){  
      10.         IEmpDAO dao = null;  
      11.         try{  
      12.             dao = new EmpDAOProxy();      
      13.         }  
      14.         catch(Exception e){  
      15.             e.printStackTrace();  
      16.         }  
      17.         return dao;  
      18.     }  
      19. }  

      7.TestDAO.java

      1. package org.dao.test;  
      2. import org.dao.factory.*;  
      3. import org.vo.*;  
      4. import org.dao.*;  
      5. public class TestDAO{  
      6.     public static void main(String args[])throws Exception{  
      7.         Emp emp = null;  
      8.         for(int i=0;i<5;i++){  
      9.             emp = new Emp();  
      10.             emp.setEmpno(i);  
      11.             emp.setEname("xiazdong-"+i);  
      12.             emp.setJob("stu-"+i);  
      13.             emp.setHireDate(new java.util.Date());  
      14.             emp.setSal(500*i);  
      15.             DAOFactory.getInstance().doCreate(emp);  
      16.         }  
      17.     }  
      18. }  

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

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多