MySQL8 + MybatisGenerator 逆向工程配置遇到的坑

文章目录

    • 1. 连接mysql驱动的改变
    • 2. nullCatalogMeansCurrent
    • 3. 关于时区
    • 4. generatorConfig.xml 完整配置

先介绍需要注意的点,文末会贴出完整的配置文件

1. 连接mysql驱动的改变

MySQL8 版本的数据库驱动,即 driverClass 不再是 com.mysql.jdbc.Driver ,而是 com.mysql.cj.jdbc.Driver,相应的驱动也要是8版本的驱动JAR包。


2. nullCatalogMeansCurrent

当你运行generator文件后发现,生成了一些多余的java.1 、 withBLOBs.java等文件,如下图:
MySQL8 + MybatisGenerator 逆向工程配置遇到的坑_第1张图片
mapper.xml 文件里面也怪怪的,明明我这张表只有id 、name 等等四个字段:
MySQL8 + MybatisGenerator 逆向工程配置遇到的坑_第2张图片
看一下 MyBatis Generator 官网怎么说的:
MySQL8 + MybatisGenerator 逆向工程配置遇到的坑_第3张图片
因此,在 jdbcConnection 中将这个属性配置上即可解决问题

看网上其他的坑,如果你只是生成了多余的 withBOLBs 文件,是因为有类型为text的字段,需要配置该字段,那么在 table 配置下加入如下配置试试:


  
  


3. 关于时区

连接数据库时报错

java.sql.SQLException: The server time zone value ‘XXXXXXXX’ is unrecognized or represents more than one time zone.

在mysql的命令行界面,查看mysql的当前时区,用time_zone参数

mysql> show variables like ‘%time_zone%’;

显示的结果可能不一样,这个不重要

±-----------------±-------+
| Variable_name | Value |
±-----------------±-------+
| system_time_zone | CST |
| time_zone | SYSTEM |
±-----------------±-------+

重要的来了,你需要设置时区:
设置全局时区

mysql> set global time_zone = ‘+8:00’;
Query OK, 0 rows affected (0.00 sec)

设置时区为东八区,北京时间

mysql> set time_zone = ‘+8:00’;
Query OK, 0 rows affected (0.00 sec)

刷新权限使设置立即生效

mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)

然后在连接数据库的URL加上如下参数:

jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC


4. generatorConfig.xml 完整配置

generatorConfig.xml





    
    

    
    
        
            
        
        
        
            
        

        
        
        
            
            
        
        
        
            
            
        
        
        
            
        

        
        
        

你可能感兴趣的:(mysql)