Dao模式
1.加入驱动
1618447237056.png
驱动包选中右键,add buil path,出现如下图效果
1618447303751.png
2.包结构
1618447183002.png
3.创建实体类grade
1618447401827.png
编写属性,alt+shift+s+o两次,分别添加无参构造、有参构造,alt+s+r添加set、get
4.GradeDao接口
1618447502141.png
5.GradeDao接口的实现类:GradeDaoImpl,在impl包中
1618447538428.png
6.访问数据库的工具类
/**
* 访问数据库的工具类
* @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;
//获取连接对象
protected Connection getConnection() {
//1.加载驱动
try {
Class.forName(driver);
conn = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
//执行增删改
protected int executeUpdate(String sql,Object... objs) {//Object... objs参数个数不限,多个实参用逗号隔开,没有这个参数不用写
int result = 0;
try {
getConnection();
pstmt = conn.prepareStatement(sql);
//依次设置参数
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;
}
//执行查询
protected ResultSet executeQuery(String sql,Object... objs) throws SQLException{
getConnection();
pstmt = conn.prepareStatement(sql);
//依次设置参数
if(objs!=null) {
for (int i = 0; i < objs.length; i++) {
pstmt.setObject(i+1, objs[i]);
}
}
rs = pstmt.executeQuery();//外面调用此方法时依次取出结果集之后再释放资源(无论是否发生异常),再调用时抛异常,所以此方法将异常抛出
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.新增年级记录
image.png
8.测试新增年级
image.png
8.增加单元测试
image.png
image.png
image.png
image.png
image.png
image.png
image.png
8.查询
实现类查询方法
image.png
测试类,依次输出查询结果
image.png