Spring框架中模板模式JdbcTemplate
JdbcTemplate是Spring框架中的一个模板模式实现类,用于简化JDBC操作。它封装了基本的JDBC操作,使得开发者可以使用更简洁的方式进行数据库操作,避免了繁琐的异常处理和资源释放。JdbcTemplate提供了一系列的方法,包括查询、更新、批处理等操作。
下面是JdbcTemplate的完整原码:
public class JdbcTemplate {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void execute(String sql) {
Connection conn = null;
Statement stmt = null;
try {
conn = dataSource.getConnection();
stmt = conn.createStatement();
stmt.execute(sql);
} catch (SQLException e) {
// 异常处理
} finally {
// 资源释放
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// 异常处理
}
}
}
public <T> List<T> query(String sql, RowMapper<T> rowMapper) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
conn = dataSource.getConnection();
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
List<T> results = new ArrayList<>();
int rowNum = 0;
while (rs.next()) {
results.add(rowMapper.mapRow(rs, rowNum++));
}
return results;
} catch (SQLException e) {
// 异常处理
return null;
} finally {
// 资源释放
try {
if (rs != null) {
rs.close();
}
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// 异常处理
}
}
}
public int update(String sql) {
Connection conn = null;
Statement stmt = null;
try {
conn = dataSource.getConnection();
stmt = conn.createStatement();
return stmt.executeUpdate(sql);
} catch (SQLException e) {
// 异常处理
return -1;
} finally {
// 资源释放
try {
if (stmt != null) {
stmt.close();
}
if (conn != null) {
conn.close();
}
} catch (SQLException e) {
// 异常处理
}
}
}
}
JdbcTemplate中的execute方法用于执行SQL语句,query方法用于执行查询操作并返回结果集,update方法用于执行更新操作并返回受影响的行数。
JdbcTemplate使用了模板模式,将公共的JDBC操作封装在模板方法中,具体的操作留给子类实现。开发者只需继承JdbcTemplate并实现RowMapper接口来自定义查询结果映射。
总结:
JdbcTemplate是Spring框架中的一个模板模式实现类,提供了简化的数据库操作方法。它封装了JDBC的操作细节,包括资源的获取和释放,异常处理等。使用JdbcTemplate可以提高开发效率,减少重复代码的编写。