最适合的Java连接MySQL方案是使用JDBC驱动结合连接池如HikariCP。以下是直接可用的代码示例:
import java.sql.*;
public class MySQLConnection {
public static void main(String[] args) {
String url = "jdbc:mysql://localhost:3306/testdb?useSSL=false&serverTimezone=UTC";
String user = "root";
String password = "password";
try (Connection conn = DriverManager.getConnection(url, user, password)) {
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
System.out.println(rs.getString("name"));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
这个方法简单高效,适合大多数应用。对于高并发场景,推荐HikariCP连接池。
方法一:JDBC原生驱动连接
首先,需要下载MySQL Connector/J驱动包,并将其添加到项目的classpath中。
加载驱动:
Class.forName("com.mysql.cj.jdbc.Driver");
建立连接:
Connection conn = DriverManager.getConnection(url, username, password);
这种方式是最基础的连接方法,适合学习和简单应用。
方法二:使用DBCP连接池
Apache Commons DBCP是一个流行的连接池。
配置BasicDataSource:
BasicDataSource ds = new BasicDataSource();
ds.setDriverClassName("com.mysql.cj.jdbc.Driver");
ds.setUrl("jdbc:mysql://localhost:3306/mydb");
ds.setUsername("root");
ds.setPassword("123456");
Connection conn = ds.getConnection();
DBCP适合中小型应用,但性能不如HikariCP。
方法三:C3P0连接池
C3P0是另一个经典连接池。
ComboPooledDataSource cpds = new ComboPooledDataSource();
cpds.setDriverClass("com.mysql.cj.jdbc.Driver");
cpds.setJdbcUrl("jdbc:mysql://localhost/test");
cpds.setUser("root");
cpds.setPassword("password");
Connection conn = cpds.getConnection();
C3P0配置灵活,但启动较慢。
方法四:HikariCP连接池(推荐)
HikariCP是目前最快的连接池。
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://127.0.0.1:3306/testdb");
config.setUsername("root");
config.setPassword("password");
config.addDataSourceProperty("cachePrepStmts", "true");
HikariDataSource ds = new HikariDataSource(config);
HikariCP轻量、高性能,适合生产环境。
方法五:Spring Boot JPA/Hibernate
在application.properties中配置:
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.hibernate.ddl-auto=update
集成简单,适合Spring项目。
对比总结
JDBC原生:简单但无连接管理。
DBCP/C3P0:老牌连接池,配置多。
HikariCP:性能最佳,推荐使用。
Spring Boot:框架集成,开发高效。
根据项目规模选择:小项目用JDBC,大项目用HikariCP。
FAQ
Q: 如何解决ClassNotFoundException?
A: 下载mysql-connector-java.jar并添加到classpath,或用Maven依赖<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.33</version></dependency>。
Q: URL中需要哪些参数?
A: 常用参数:useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true。
Q: 连接池和直接JDBC哪个好?
A: 连接池更好,高并发时避免频繁创建连接。
Q: MySQL 8.0驱动变化?
A: 使用com.mysql.cj.jdbc.Driver,URL加serverTimezone=UTC。