封装通用jdbc工具类核心是抽离连接管理、异常处理、资源释放,通过db.properties配置数据库信息,提供getconnection()和重载close()方法,并可选添加executeupdate/executequery便捷方法。

封装通用 JDBC 工具类,核心目标是把重复性高、易出错的代码(如加载驱动、获取连接、关闭资源)抽离出来,让业务代码只关注 SQL 和数据逻辑。关键不在于写得多,而在于把连接管理、异常处理、资源释放这三块做稳。
提取数据库配置到外部文件
避免硬编码 URL、用户名、密码,用 db.properties 统一管理:
- 放在
src/main/resources下,确保能被类加载器读取 - 内容示例:
driver=com.mysql.cj.jdbc.Driver<br>url=jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf8<br>user=root<br>password=123456
- 静态代码块中用
ClassLoader.getResource("db.properties")加载,并调用Class.forName(driver)注册驱动
提供可复用的 getConnection() 方法
每次需要执行 SQL 时,调用一个统一入口获取连接,而不是重复写 DriverManager.getConnection(...):
你接手一个需求时,是不是经常这样:"改一个小字段 → 结果把不相关的代码也改了"、"需求说得很模糊 → 做着做着发现跑偏了"、"数据库加个字段 → 上线才发现漏了数据兼容"、"做了个新功能 → 一个月后自己都忘了当时怎么设计的"、"写到一半被中断 → 再回来不知道从哪继续";这个 Skill 就是专门解决这些问题的。 它会自动探测你的项目环境(JDK、Spring Boot、ORM、数据库、前端框架),记在
- 方法声明为
public static Connection getConnection(),返回新连接 - 内部直接使用已加载的
url、user、password - 不建议在工具类里做连接池——那是 Druid 或 HikariCP 的事;这个层级只管“单次连接的可靠获取”
重载 close() 方法处理资源释放
JDBC 资源必须显式关闭,且顺序要对(ResultSet → Statement → Connection),否则可能内存泄漏或连接不释放:
- 提供两个版本:
close(Statement stmt, Connection conn)close(ResultSet rs, Statement stmt, Connection conn) - 每个参数判空再关闭,捕获
SQLException并打印堆栈(开发期有用),不抛出异常干扰上层逻辑 - 不要在 finally 块里写重复关闭逻辑——交给这个工具方法统一做
可选:增加简单查询/更新模板(轻量级)
如果不想引入 DBUtils 或 Spring JDBC,可在工具类里加几个静态便捷方法:
-
public static int executeUpdate(String sql, Object... params):预编译 + 批量设参 + 执行,返回影响行数 -
public static List<map object>> executeQuery(String sql, Object... params)</map>:查出全部结果,转成键值对列表(适合快速原型或小项目) - 注意:这类方法只是语法糖,不替代 ORM;复杂映射仍推荐用
BeanListHandler(DBUtils)或JdbcTemplate(Spring)
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










