溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

淺談對于DAO設計模式的理解

發布時間:2020-09-24 13:15:56 來源:腳本之家 閱讀:230 作者:Rekent 欄目:編程語言

為了降低耦合性,提出了DAO封裝數據庫操作的設計模式。

它可以實現業務邏輯與數據庫訪問相分離。相對來說,數據庫是比較穩定的,其中DAO組件依賴于數據庫系統,提供數據庫訪問的接口。

一般的DAO的封裝由以下另個原則:

 · 一個表對應一個表,相應地封裝一個DAO類。
 · 對于DAO接口,必須由具體的類型定義。這樣可以避免被錯誤地調用。

 在DAO模式中,將對數據的持久化抽取到DAO層,暴露出Service層讓程序員使用,這樣,一方面避免了業務代碼中混雜JDBC調用語句,使得業務落實實現更加清晰。

 通常我們創建一個包,用于保存DAO接口,再創建一個包,用于保存DAO接口的實現類即可。

下面展示一個DAO接口實例Manage:

public interface Manage {
  /*插入(insert)操作--->方法名(插入的數據1,插入的數據2,……)-->返回T|F*/
  public boolean insert(String name,String classes,String score);
  /*獲取全表(select *)操作-->利用Bean,一行對應一個Bean-->返回一個承載Bean的Collection*/
  public Collection select();
  /*刪除(delete)操作-->方法名(where處需要的數據)--->返回T|F*/
  public boolean delete(String id);
  /*獲取指定行對象---->方法名(where處需要的數據)---->返回一個承載Bean的List*/
  public List up_select(String id);
  /*修改指定行對象---->方法名(修改數據1,修改數據2,……,where處需要的數據)---->返回T|F*/
  public boolean update(String name,String classes,String id);
}

下面我們針對一張具體的表對Manage創建實現類,比如表名為test,數據庫名為bean。

public class ManageInfo implements Manage {
  final private String url="jdbc:mysql://localhost:3306/bean";
  final private String user="root";
  final private String password="root";
  @Override
  public boolean insert(String name, String classes, String score) throws Exception {
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn = DriverManager.getConnection(url, user, password);
    String sql="insert into test(name,classes,score) Values(?,?,?)";
    PreparedStatement st=conn.prepareStatement(sql);
    st.setString(1,name);
    st.setString(2,classes);
    st.setString(3,score);
    int count=st.executeUpdate();
    if(count<=1){
      return true;
    }else {
      return false;
    }
  }

其余實現近乎相同,若返回Bean類型的Collection,則從ResultSet里讀取出每一行的數據。

將一行的數據,存入一個Java Bean中(為Bean 創建對應類型的成員變量),并將Set好的Bean存入Add入Collection。

再讀取下一行的數據,重復操作,最后返回Collection即可。

總結

以上就是本文關于淺談對于DAO設計模式的理解的全部內容,希望對大家有所幫助。感興趣的朋友可以參閱本站:BaseJDBC和CRUDDAO的寫法實例代碼、使用JDBC實現數據訪問對象層(DAO)代碼示例等,有什么問題可以隨時留言,小編會及時回復大家。感謝閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女