Mabtis 之 Mybatis-config.xml因为mysql-connector-java高版本出现的坑

本文详细解析了在 MyBatis 中配置 MySQL 数据源时如何正确设置 JDBC 连接参数,特别是针对时区配置和 SSL 使用的问题,避免出现 InvalidConnectionAttributeException 错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


出现这个前提是高版本mysql驱动,[mysql-connector-java](https://www.cnblogs.com/skyshalo/p/7251378.html)版本高和版本低的配置不同!不同!不同!



<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
      PUBLIC"-//mybatis.org//DTD Config 3.0//EN" 
      "http://mybatis.org/dtd/mybatis-3-config.dtd">
<!--通过这个配置文件,完成mybatis与数据库的连接  -->
<configuration>   
      <environments default="">      
      <environment id="">          
      <transactionManager type="JDBC"/>           
        <dataSource type="POOLED">              
               <property name="driver"value="com.mysql.cj.jdbc.Driver"/>             
               <property name="url" value="
jdbc:mysql://localhost:3306/tdoke-iot?characterEncoding=utf-8&amp;serverTimezone=UTC&amp;useSSL=false" />              
               <property name="username" value="root" />            
               <property name="password" value="root" />          
         </dataSource>      
         </environment> 
       </environments>      
  <mappers>         
     <mapper class="com.tdoke.mapper.DeviceMapper"/>          
    <mapper resource="mapper/DeviceMapper.xml"/>      
    </mappers> 
 </configuration>





上面红色是解决的结果,贴上可以解决你的问题,下面讲问题在哪


1. 如果jdbc:mysql://localhost:3306/tdoke-iot?characterEncoding=utf-8只写到这里,报下面的错:


Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException:
 The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. 
You must configure either the server or JDBC driver (via the serverTimezone configuration property) 
to use a more specifc time zone value if you want to utilize time zone support


2.加上&amp;serverTimezone=UTC&amp;useSSL=false;可以保证你xml里面配置不报错,然后关键的是这句serverTimezone=UTC


这是因为为了使MySQL JDBC驱动程序与UTC时区配合使用,必须在连接字符串中明确指定serverTimezone

就是这句话
你加上就好了
?characterEncoding=utf-8&amp;serverTimezone=UTC&amp;useSSL=false

### MyBatis配置文件中引用`jdbc.properties`的方法 在MyBatis的配置文件`mybatis-config.xml`中,可以通过`<properties>`标签来加载外部的`jdbc.properties`文件。以下是具体实现方法: #### 加载外部属性文件 通过`<properties>`标签中的`resource`属性指定相对路径或者`url`属性指定绝对路径来引入`jdbc.properties`文件。 ```xml <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 引入外部的jdbc.properties文件 --> <properties resource="jdbc.properties"/> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <!-- 使用${}语法读取properties文件中的值 --> <property name="driver" value="${jdbc.driver}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.user}"/> <property name="password" value="${jdbc.password}"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/mapper/UserMapper.xml"/> </mappers> </configuration> ``` 在此配置中,`<properties>`标签用于加载`jdbc.properties`文件的内容[^3]。随后,在定义数据源时,利用`${}`占位符动态替换具体的数据库连接参数。 #### `jdbc.properties`文件内容示例 确保`jdbc.properties`文件位于类路径下(如`src/main/resources/jdbc.properties`),其内容如下所示: ```properties jdbc.user=root jdbc.password=123456 jdbc.url=jdbc:mysql://127.0.0.1:3306/mybatis?useSSL=false&serverTimezone=UTC&characterEncoding=UTF-8 jdbc.driver=com.mysql.cj.jdbc.Driver ``` 此部分展示了如何设置MySQL驱动及其对应的URL、用户名和密码等信息[^1]。 #### 注意事项 1. **路径问题** 如果使用的是`resource`属性,则需确保`jdbc.properties`文件存在于项目的classpath路径下;如果采用`url`方式,则应提供完整的文件系统路径。 2. **兼容性问题** MySQL JDBC URL 中可能涉及特殊字符编码问题,例如`&`需要转义为`&`以避免XML解析错误[^2]。 3. **Driver版本匹配** 确认使用的MySQL驱动版本与实际运行环境相匹配,尤其是对于较新的MySQL服务器版本,建议使用`com.mysql.cj.jdbc.Driver`作为驱动类名。 --- ### 示例代码验证 假设项目结构如下: ``` src/ ├── main/ │ ├── java/ │ │ └── com.example.mapper.UserMapper.java │ └── resources/ │ ├── mybatis-config.xml │ └── jdbc.properties └── test/ └── ... ``` 执行测试前确认以下依赖已添加至`pom.xml`(Maven项目为例): ```xml <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.30</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值