文章目录
八、项目开发实现步骤
(五)创建数据库连接管理类
- DAO层对表进行增删改查等操作都必须先获取数据库连接,操作完之后即使关闭数据库连接,为此,我们单独创建一个数据库连接管理类,提供两个静态方法应该是关闭数据库连接方法
1、创建数据据库使用工具包
- 创建
net.zzl.studen.dbutil
包
2、创建数据库连接管理类
- 在
net.zzl.student.dbutil
包里创建ConnectionManager
(1)定义数据库连接属性常量
- 定义四个静态常量
package net.zzl.student.dbutil;
/**
* 功能
* 作者:赵卓琳
* 日期:2023年06月14日
*/
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class ConnectionManager {
private static final String DRIVER = "com.mysql.jdbc.Driver"; // 驱动程序
private static final String URL = "jdbc:mysql://localhost:3306/student?useSSL=false&useUnicode=true&characterEncoding=utf8";// 数据源
private static final String USER = "root"; // 用户名
private static final String PASSWORD = "root"; // 数据库密码
(2)创建私有化构造方法
- 创建私有化构造方法,拒绝实例化
// 私有化构造方法,拒绝实例化
private ConnectionManager() {
}
(3)编写获取数据库连接静态方法
- 编写
getConnection()
静态方法(直接通过类名可以访问的方法)
// 获取连接静态方法
public static Connection getConnection() {
// 定义数据库连接
Connection conn = null;
try {
// 加载数据库驱动程序
Class.forName(DRIVER);
// 获取数据库连接
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (ClassNotFoundException e) {
System.err.println(e.getMessage());
} catch (SQLException e) {
System.err.println(e.getMessage());
}
// 返回数据库连接
return conn;
}
(4)编写关闭数据库连接静态方法
- 编写
closeConnection(Connection conn)
静态方法
// 关闭连接静态方法
public static void closeConnection(Connection conn) {
// 判断连接是否为空
if (conn != null) {
try {
// 关闭数据库连接
conn.close();
// 提示用户
System.out.println("提示:数据库连接已关闭~");
} catch (SQLException e) {
System.err.println(e.getMessage());
}
}
}
(5)在主方法里测试两个静态方法
- 测试两个静态方法
// 主方法,测试两个静态方法
public static void main(String[] args) {
// 获取数据库连接
Connection conn = getConnection();
// 判断连接是否为空
if (conn != null) {
System.out.println("恭喜,数据库连接成功~");
// TODO 待做
// 关闭数据库连接
closeConnection(conn);
} else {
System.out.println("遗憾,数据库连接失败~");
}
}
3、运行数据库连接管理类
- 运行程序,查看结果
4、程序运行可能出现的异常
(1)驱动程序不存在或有误
- 故意将驱动程序名称写错
(2)数据库服务器端口号有误
- 故意将数据库服务器端口号写错
(3)未知数据库错误
- 故意将数据库名写错
(4)数据库用户名错误
- 故意将数据库用户名写错
(5)数据库密码错误
- 故意将数据库密码写错
4
八、项目开发实现步骤
(六)创建数据访问接口
- DAO: Data Acess Object -数据访问对象
- 系统有四张表:
t college
、t status
、t_student
与t_user
表,对这四张表的操作就在相应的数据访问接口里进行规定,有四个数据访问接口:CollegeDao
、StatusDao ``StudentDao
与UserDao
。将这些接口放到net.hw.student.dao包里。 - 在
net.zzl.student
包里创建dao
子包
1、创建学校数据访问接口
- 在
net.zzl.student.dao
包里创建CollegeDao
接口
package net.zzl.student.dao;
import net.zzl.student.bean.College;
/**
* 功能:学校数据访问接口
* 作者:赵卓琳
* 日期:2023年06月14日
*/
public interface CollegeDao {
College findById(int id);//按标识符查询学校记录
int update(College college);//更新学校记录
}
2、创建状态数据访问接口
- 在
net.zzl.student.bean
包里创建StatusDao
接口
package net.zzl.student.dao;
import net.zzl.student.bean.Status;
/**
* 功能:学校数据访问接口
* 作者:赵卓琳
* 日期:2023年06月14日
*/
public interface StatusDao {
Status findById(int id);//按标识符查询状态记录
int update(Status status);//更新状态记录
}
3、创建学生数据访问接口
- 在·net.zzl.student.dao
包里创建
StudentDao`接口
package net.zzl.student.dao;
import net.zzl.student.bean.Student;
import java.util.List;
import java.util.Vector;
/**
* 功能:学生数据访问接口
* 作者:赵卓琳
* 日期:2023年06月14日
*/
public interface StudentDao {
int insert(Student student); // 插入学生记录
int deleteById(String id); // 按标识符删除学生记录
int deleteByClass(String clazz); // 按班级删除学生记录
int deleteByDepartment(String department); // 按系部删除学生记录
int update(Student student); // 更新学生记录
Student findById(String id); // 按标识符查询学生记录
List<Student> findByName(String name); // 按姓名查询学生记录
List<Student> findByClass(String clazz); // 按班级查询学生记录
List<Student> findByDepartment(String department); // 按系部查询学生记录
List<Student> findAll(); // 查询全部学生记录
Vector findRowsBySex(); // 按性别统计人数
Vector findRowsByClass(); // 按班级统计人数
Vector findRowsByDepartment(); // 按系部统计人数
}
4、创建用户数据访问接口
- 在
net.huawei.student.dao
包里创建UserDao
接口
package net.zzl.student.dao;
import net.zzl.student.bean.User;
import java.util.List;
/**
* 功能:用户数据访问接口
* 作者:赵卓琳
* 日期:2023年06月14日
*/
public interface UserDao {
int insert(User user);//
int deleteById(int id);//
int update(User user);//
User fondById(int id);
List<User> findAll();
User login(String username, String password);
boolean isUsernameExisted(String sername);
}
- 思考为什么要创建数据访问接口?采用接口加实现类分层处理方式有什么好处?
- 数据访问接口解决
What
问题,数据访问接口类解决How
问题