别把 JDBC 裸用当本事,连接池这块缺了就得补
很多从 JavaWeb 刚转开发的人,写数据库操作还停留在 DriverManager 直连的阶段:每次请求 new 一个 Connection,用完 close 掉。这在本地跑 demo 没问题,一到并发场景连接数打满、数据库直接拒连,你才会意识到裸用 JDBC 是个坑。这门课的主题就是 c3p0 连接池,解决的核心问题是:怎么让连接复用、怎么用配置文件管理参数、怎么配合 Apache Commons DbUtils 的 QueryRunner 把增删改查写得干净点。它不讲数据库原理,也不讲 Spring Data JPA,就是补 JDBC 到框架之间那段没人教、但实战天天用的空白。适合的基础是:你已经能独立写 JDBC 的 CRUD,知道 Class.forName 和 PreparedStatement 怎么回事,但对连接池、数据源、DbUtils 这套工具链没概念。如果你连 JDBC 都写不顺,先回去补原生 API,这课不是给你零基础起步的。
建议先看代码实现和配置文件两块,QueryRunner 紧跟其后
资料包的线索很清晰,五个模块按顺序看,但重心要放对。第一节连接池简介过一遍就行,重点在第二节和第三节:纯代码方式实现和配置文件方式实现。这两块的区别不是写法偏好,而是工程现实——硬编码参数到代码里,换个环境就得重新编译,这是典型的反模式;用 c3p0-config.xml 或 properties 外置配置,才是实际项目里的标准做法。建议你两段都敲一遍,然后自己改一次参数(比如 maxPoolSize、initialPoolSize),观察日志里连接是怎么预创建、怎么借出去、怎么回收的。第四节和第五节是 QueryRunner 的增删改查,这是 Commons DbUtils 的核心,配合 c3p0 的 DataSource 用。别只看视频跟着抄,自己写一个实体类,用 QueryRunner 的 update 方法做插入和删除,再用 query 方法配合 ResultSetHandler 把结果集映射成对象。这两节练熟了,你才算真正把 c3p0 和 DbUtils 串起来。
学完能独立做什么,以及资料怎么配合练习
学完这门课,你应该能独立做这几件事:在原生 Java 项目里引入 c3p0 依赖,用配置文件方式初始化 ComboPooledDataSource;写一个简单的工具类封装 getConnection 和资源释放;用 QueryRunner 完成单表的增删改查,包括批量操作和结果集到 Bean 的映射;看懂别人项目里 c3p0 的配置参数为什么那么填。这些不是高深技能,但面试问到数据源管理、项目里要换连接池(比如从 c3p0 换到 Druid),你能说清原理、改得动配置。资料配合练习的方式:视频里的代码片段别当现成答案,自己起一个 Maven 工程,引入 c3p0 和 commons-dbutils 两个依赖,建一张测试表,跟着视频的节奏把五个模块的代码全敲一遍。重点验证两件事——配置文件方式能不能跑通,QueryRunner 的查询能不能正确映射字段名和属性名。跑不通就翻异常,空指针、类型不匹配、列名对不上,这些坑自己踩一遍比看十遍视频管用。看完后你应该能回答:c3p0 的连接池为什么要预创建、配置文件方式和代码方式的取舍在哪、QueryRunner 相比原生 PreparedStatement 省了什么、ResultSetHandler 的几种实现各自适用什么场景。
课程目录
1 连接池简介 (09:41) 2 c3p0连接池代码方式实现 (13:49) 3 c3p0连接池配置文件方式实现 (04:48) 4 QueryRunner实现表添加、修改、删除 (20:46) 5 QueryRunner实现表的查询 (13:09)





