1. Java与MySQL连接基础解析
Java应用与MySQL数据库的连接是后端开发中最基础也最关键的技能之一。作为从业十余年的Java开发者,我见过太多项目因为连接配置不当导致的性能问题和稳定性隐患。让我们从最底层的驱动原理开始,彻底掌握这门"基本功"。
MySQL Connector/J是MySQL官方提供的JDBC驱动,目前最新8.0版本兼容MySQL 5.7及以上所有版本。与旧版5.x驱动相比,它有几个重要改进:
- 默认采用性能更好的X协议通信
- 支持完整的JDBC 4.2规范
- 改进的SSL/TLS加密支持
- 更好的连接池兼容性
重要提示:生产环境强烈建议使用8.0+版本,5.x驱动已停止维护且存在已知安全问题。
2. 完整连接实现方案
2.1 基础连接代码实现
标准的JDBC连接代码模板如下,注意其中的关键参数配置:
java复制// 1. 加载驱动 (JDBC 4.0+可省略这步)
Class.forName("com.mysql.cj.jdbc.Driver");
// 2. 建立连接
String url = "jdbc:mysql://localhost:3306/mydb?useSSL=false&serverTimezone=UTC";
String user = "username";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password);
Statement stmt = conn.createStatement()) {
// 3. 执行查询
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
// 4. 处理结果
while (rs.next()) {
System.out.println(rs.getString("username"));
}
} catch (SQLException e) {
e.printStackTrace();
}
关键连接参数说明:
useSSL=false:开发环境可禁用SSL(生产必须启用)serverTimezone=UTC:避免时区不一致导致的时间问题useServerPrepStmts=true:启用服务端预处理语句(防SQL注入)
2.2 连接池最佳实践
直接使用DriverManager在生产环境是灾难性的。推荐使用HikariCP连接池:
java复制HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/mydb");
config.setUsername("username");
config.setPassword("password");
config.addDataSourceProperty("cachePrepStmts", "true");
config.addDataSourceProperty("prepStmtCacheSize", "250");
config.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
HikariDataSource ds = new HikariDataSource(config);
连接池关键参数调优建议:
maximumPoolSize:通常设为 (CPU核心数 * 2) + 有效磁盘数connectionTimeout:建议30000ms(30秒)idleTimeout:600000ms(10分钟)较合理
