Javajdbc BaseDao案例
时间: 2024-12-22 20:31:44 浏览: 8
JDBC(Java Database Connectivity)是Java平台用于与数据库交互的标准API。BaseDao(基础数据访问对象)是一个常见的设计模式,在Java JDBC应用中,它作为一个通用的模板或基类,提供了一些基本的数据操作方法,如查询、插入、更新和删除等。这种设计模式有助于抽象数据库操作,并便于后续的具体DAO(Data Access Object,数据访问对象)子类复用。
例如,你可以创建一个名为`BaseDao`的抽象类:
```java
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public abstract class BaseDao {
protected Connection connection;
public BaseDao(Connection connection) {
this.connection = connection;
}
// 泛型方法示例,用于执行SQL查询
protected <T> T query(String sql, Class<T> clazz, Object... params) {
try (PreparedStatement pstmt = connection.prepareStatement(sql)) {
setParameters(pstmt, params);
ResultSet resultSet = pstmt.executeQuery();
return mapResultSetToEntity(resultSet, clazz);
} catch (Exception e) {
throw new RuntimeException("Error executing SQL", e);
}
}
// 更多方法,如插入、更新和删除操作...
private void setParameters(PreparedStatement pstmt, Object[] params) throws SQLException {
for (int i = 0; i < params.length; i++) {
pstmt.setObject(i + 1, params[i]);
}
}
// 将ResultSet转换成实体对象的方法
private T mapResultSetToEntity(ResultSet rs, Class<T> clazz) throws Exception {
if (!rs.next()) return null;
return entityClassMapper(rs, clazz);
}
// 这里可以自定义如何从ResultSet到实体对象的具体映射逻辑...
// 需要在子类中实现的方法,如entityClassMapper()具体处理
protected abstract T entityClassMapper(ResultSet rs, Class<T> clazz) throws Exception;
}
```
阅读全文