解决:Loading class `com.mysql.jdbc.Driver‘. This is deprecated. The new driver class is ......

在Mybatis项目运行的时候出现以下问题:

Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary.


产生原因:

mysql的版本问题

我在Pom.xml文件中使用的依赖包是8.0.32版本,连接数据驱动源时我用的是com.mysql.jdbc.Driver,查了一下发现这个是mysql5.0版本的写法

 <!-- mysql数据库 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.32</version>
        </dependency>
 <!-- 配置数据库信息,方法一 -->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="root"/>

解决方法:

  <property name="driver" value="com.mysql.jdbc.Driver"/>

改成

  <property name="driver" value="com.mysql.cj.jdbc.Driver"/>

运行

### 如何解决加载 `com.mysql.jdbc.Driver` 类时出现的弃用警告 在现代 MySQL 驱动程序中,加载 `com.mysql.jdbc.Driver` 类已被弃用[^3]。推荐使用新的驱动类 `com.mysql.cj.jdbc.Driver` 作为替代方案。以下详细说明如何解决此问题并提供正确的实现方法。 #### 使用新的驱动类 `com.mysql.cj.jdbc.Driver` MySQL 官方建议使用 `com.mysql.cj.jdbc.Driver` 替代旧版本的驱动类 `com.mysql.jdbc.Driver`。新驱动类不仅解决了弃用问题,还提供了更好的性能和兼容性支持[^3]。 #### 自动注册驱动 从 JDBC 4.0 开始,驱动程序可以通过服务提供者接口(SPI)自动注册,因此手动加载驱动类通常是不必要的。这意味着无需显式调用 `Class.forName("com.mysql.cj.jdbc.Driver")` 来注册驱动程序[^3]。例如: ```java // 不再需要手动加载驱动 // Class.forName("com.mysql.cj.jdbc.Driver"); // 直接通过连接 URL 建立数据库连接 String url = "jdbc:mysql://localhost:3306/实验数据库?serverTimezone=UTC&characterEncoding=utf8"; String user = "root"; String password = "123456"; try (Connection connection = DriverManager.getConnection(url, user, password)) { System.out.println("数据库连接成功!"); } catch (SQLException e) { e.printStackTrace(); } ``` #### 数据库连接池配置 如果项目中使用了数据库连接池(如 Tomcat 数据源连接池),确保在配置文件中指定正确的驱动类名称。例如,在 `db.properties` 文件中更新驱动类为 `com.mysql.cj.jdbc.Driver`[^1]: ```properties driverName=com.mysql.cj.jdbc.Driver url=jdbc:mysql://localhost:3306/实验数据库?serverTimezone=UTC&characterEncoding=utf8 user=root password=123456 MaxActive=5 MinIdle=2 InitialSize=3 ``` 同时,确保项目依赖中包含正确的 MySQL 驱动包版本。例如,在 Maven 项目的 `pom.xml` 中添加以下依赖: ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.33</version> <!-- 确保使用最新版本 --> </dependency> ``` #### SQL 注入与事务管理 除了替换驱动类外,还需注意防止 SQL 注入问题以及正确管理事务[^2]。使用预处理语句(PreparedStatement)可以有效避免 SQL 注入风险。例如: ```java String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; try (Connection connection = DriverManager.getConnection(url, user, password); PreparedStatement preparedStatement = connection.prepareStatement(sql)) { preparedStatement.setString(1, "John Doe"); preparedStatement.setString(2, "john@example.com"); preparedStatement.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); } ``` 此外,通过设置事务的隔离级别和提交策略,可以确保数据的一致性和完整性[^2]。 ### 总结 通过使用新的驱动类 `com.mysql.cj.jdbc.Driver` 并利用 JDBC 的自动注册功能,可以有效解决加载 `com.mysql.jdbc.Driver` 类时出现的弃用警告。同时,确保项目依赖和配置文件中的驱动类名称保持一致,并采用最佳实践来提高代码的安全性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值