Dao模式
1.加入驅(qū)動(dòng)
1618447237056.png
驅(qū)動(dòng)包選中右鍵竹揍,add buil path呕寝,出現(xiàn)如下圖效果
1618447303751.png
2.包結(jié)構(gòu)
1618447183002.png
3.創(chuàng)建實(shí)體類grade
1618447401827.png
編寫屬性达舒,alt+shift+s+o兩次只嚣,分別添加無參構(gòu)造灿渴、有參構(gòu)造洛波,alt+s+r添加set胰舆、get
4.GradeDao接口
1618447502141.png
5.GradeDao接口的實(shí)現(xiàn)類:GradeDaoImpl,在impl包中
1618447538428.png
6.訪問數(shù)據(jù)庫(kù)的工具類
/**
* 訪問數(shù)據(jù)庫(kù)的工具類
* @author Administrator
*
*/
public class DBHelper {
private String driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/myschool?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC";
private String username = "root";
private String password = "123456";
protected Connection conn = null;
protected PreparedStatement pstmt = null;
protected ResultSet rs = null;
//獲取連接對(duì)象
protected Connection getConnection() {
//1.加載驅(qū)動(dòng)
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//執(zhí)行增刪改
protected int executeUpdate(String sql,Object... objs) {//Object... objs參數(shù)個(gè)數(shù)不限蹬挤,多個(gè)實(shí)參用逗號(hào)隔開缚窿,沒有這個(gè)參數(shù)不用寫
int result = 0;
try {
getConnection();
pstmt = conn.prepareStatement(sql);
//依次設(shè)置參數(shù)
if(objs!=null) {
for (int i = 0; i < objs.length; i++) {
pstmt.setObject(i+1, objs[i]);
}
}
result = pstmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
closeAll();
}
return result;
}
//執(zhí)行查詢
protected ResultSet executeQuery(String sql,Object... objs) throws SQLException{
getConnection();
pstmt = conn.prepareStatement(sql);
//依次設(shè)置參數(shù)
if(objs!=null) {
for (int i = 0; i < objs.length; i++) {
pstmt.setObject(i+1, objs[i]);
}
}
rs = pstmt.executeQuery();//外面調(diào)用此方法時(shí)依次取出結(jié)果集之后再釋放資源(無論是否發(fā)生異常),再調(diào)用時(shí)拋異常焰扳,所以此方法將異常拋出
return rs;
}
//釋放資源
protected void closeAll() {
if(rs!=null) {
try {
rs.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(pstmt!=null) {
try {
pstmt.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
7.新增年級(jí)記錄
image.png
8.測(cè)試新增年級(jí)
image.png
8.增加單元測(cè)試
image.png
image.png
image.png
image.png
image.png
image.png
image.png
8.查詢
實(shí)現(xiàn)類查詢方法
image.png
測(cè)試類倦零,依次輸出查詢結(jié)果
image.png