基于JDBC封装的BaseDao可以使得我们在操作关系型数据库时更加方便、快捷。下面我将详细讲解BaseDao的使用攻略。
一、什么是BaseDao
BaseDao是基于JDBC进行封装的通用数据访问层,提供了基本的CURD方法以便我们进行数据操作。在使用BaseDao的同时,我们也可以轻松地进行扩展和定制,满足复杂查询和特殊需求。
二、BaseDao类的代码结构
public abstract class BaseDao<T> implements IBaseDao<T> {
private Connection connection;
protected PreparedStatement pstm;
protected ResultSet rs;
public BaseDao() {
try {
Class.forName(MYSQL_DRIVER);
connection = DriverManager.getConnection(MYSQL_URL, MYSQL_USERNAME, MYSQL_PASSWORD);
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
}
}
@Override
public int insert(T t) {
// 插入操作
}
@Override
public int delete(T t) {
// 删除操作
}
@Override
public int update(T t) {
// 修改操作
}
@Override
public List<T> selectAll() {
// 查询所有操作
}
@Override
public T selectById(Integer id) {
// 根据ID查询单条记录操作
}
protected void release(){
// 释放资源方法
}
}
三、BaseDao类的说明
1. 抽象类
BaseDao是一个抽象类,我们在实际使用时需要基于此类进行扩展。
2. 泛型
BaseDao类实现了IBaseDao接口,并定义了泛型T,使得我们可以使用该类来操作任意类型的对象。
3. 数据库连接
在BaseDao类的构造方法中,我们获取数据库连接,并在其中加载了MySQL驱动。
4. CURD操作
BaseDao类提供了基本的CURD操作(增删改查)方法,包括insert、delete、update、selectAll和selectById等。
5. 释放资源
BaseDao类中提供了release方法,用于释放资源。
四、使用示例
下面我将通过两个示例详细说明如何使用BaseDao。
示例1:查询学生列表
假设我们有一个Student类,我们希望通过BaseDao查询出所有的学生列表。
我们可以首先定义一个StudentDao类继承自BaseDao类,如下所示:
public class StudentDao extends BaseDao<Student> {
}
在StudentDao类中,我们继承了BaseDao类,并指定了Student类型,这样我们就可以使用BaseDao中定义的方法来操作Student对象了。
现在我们可以定义一个selectAll方法来查询所有的学生列表,示例代码如下:
public List<Student> selectAll() {
List<Student> studentList = new ArrayList<>();
try {
String sql = "SELECT * FROM student";
pstm = connection.prepareStatement(sql);
rs = pstm.executeQuery();
while (rs.next()) {
Student student = new Student();
student.setId(rs.getInt("id"));
student.setName(rs.getString("name"));
student.setAge(rs.getInt("age"));
student.setGender(rs.getString("gender"));
studentList.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
release();
}
return studentList;
}
在selectAll方法中,我们通过获取数据库连接,执行SQL语句,将结果保存在List
现在我们就可以通过StudentDao类的实例来调用selectAll方法,示例代码如下:
StudentDao studentDao = new StudentDao();
List<Student> studentList = studentDao.selectAll();
示例2:增加学生信息
现在我们希望通过BaseDao类向数据库中增加一条学生信息记录。
假设我们已经有一个Student对象,可以使用下面的示例代码将其插入到数据库中。
public int insert(Student student) {
int rows = 0;
try {
String sql = "INSERT INTO student (name, age, gender) VALUES (?, ?, ?)";
pstm = connection.prepareStatement(sql);
pstm.setString(1, student.getName());
pstm.setInt(2, student.getAge());
pstm.setString(3, student.getGender());
rows = pstm.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
release();
}
return rows;
}
在insert方法中,我们通过获取数据库连接,执行SQL语句,得到受影响的行数,并且在最后释放资源。
现在我们就可以通过StudentDao类的实例来调用insert方法,示例代码如下:
StudentDao studentDao = new StudentDao();
Student student = new Student();
student.setName("张三");
student.setAge(18);
student.setGender("男");
studentDao.insert(student);
这样就可以将一个名为“张三”,年龄为18岁,性别为男的学生信息插入到数据库中了。
到这里为止,我们已经对BaseDao类进行了详细的攻略,并且通过两个示例说明了其中的使用方法。希望这篇文章可以帮助你更好的理解和使用BaseDao类。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于JDBC封装的BaseDao(实例代码) - Python技术站