java简易jdbc框架核心是封装连接管理、预编译、结果映射、资源释放与异常处理;通过配置文件读取数据库参数,静态块注册驱动;提供getconnection()与多态close();分离update/query方法并用resultsethandler映射结果;可选反射实现字段自动匹配。

Java 中把 JDBC 操作封装成简易框架,核心是把重复、易错、固定流程的代码抽离出来,统一管理连接、预编译、结果映射、资源释放和异常处理。不需要引入 Spring 或 MyBatis,几类关键组件就能搭出轻量可用的框架。
提取配置 + 自动加载驱动
把数据库参数(URL、用户名、密码、驱动类)从硬编码移到 db.properties 文件中,用 ResourceBundle 或 Properties.load() 读取。在工具类静态块里完成驱动注册,确保只执行一次:
- 配置文件放在
src/main/resources下,键名如jdbc.url、jdbc.driver - 静态块中调用
Class.forName(driver),捕获ClassNotFoundException并包装为运行时异常 - 避免每次 getConnection() 都重新加载驱动,提升启动效率
统一封装 Connection 获取与关闭
提供静态方法 getConnection() 返回连接,内部可适配不同来源(DriverManager 直连 or 连接池 DataSource)。同时提供重载的 close() 方法,支持关闭 Connection、Statement、ResultSet 的任意组合:
Java开发手册规约集合,基于阿里巴巴Java开发手册(嵩山版)。 涵盖7大维度:编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规约。 当用户需要:(1) 编写或审查Java代码 (2) 检查命名/代码规范 (3) 处理异常和日志 (4) 编写单元测试 (5) 安全编码 (6) 数据库设...
- 使用 try-with-resources 不够灵活(比如 ResultSet 在 DAO 层外才消费),手动 close 更可控
- 关闭顺序必须是
ResultSet → Statement → Connection,否则可能抛异常 - 每个 close 方法都做非空判断,防止 NPE
参数化 SQL 执行:update 与 query 分离
定义两个主方法:update(String sql, Object... args) 处理 INSERT/UPDATE/DELETE,返回影响行数;query(String sql, ResultSetHandler handler, Object... args) 处理 SELECT,由 ResultSetHandler 接口负责将 ResultSet 映射为对象或集合:
- 所有 SQL 都用
PreparedStatement,自动绑定args到 ? 占位符,杜绝 SQL 注入 -
ResultSetHandler可实现多种策略:BeanHandler(单个实体)、BeanListHandler(列表)、ScalarHandler(单值)等 - 方法内统一 try-catch,打印日志但不吞异常,让上层决定是否继续
基于反射的通用结果映射(可选增强)
若想进一步简化 DAO 层,可封装一个 BeanProcessor 工具类,利用反射自动把 ResultSet 字段名匹配到实体类属性(忽略大小写、下划线转驼峰):
- 要求实体类字段名与表列名语义一致,或通过注解(如
@Column)显式指定 - 处理基本类型、String、Date、BigDecimal 等常见类型,对 null 值设默认值(如 0、"")
- 配合 BaseDao 抽象类,让具体 Dao(UserDao、OrderDao)只需继承并传入泛型类型即可复用增删改查
不复杂但容易忽略
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










