為了降低耦合性,提出了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)代碼示例等,有什么問題可以隨時留言,小編會及時回復大家。感謝閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。