1. 程式人生 > 其它 >mybatis-generator 修改表結構後實體不更新問題處理記錄

mybatis-generator 修改表結構後實體不更新問題處理記錄

https://zhuanlan.zhihu.com/p/394327034

https://www.jb51.net/article/152187.htm

在構造檔案中,這裡是generatorConfig.xml新增連線資料庫引數 nullCatalogMeansCurrent=true

        <jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
                        connectionURL="jdbc:mysql://127.0.0.1:3309/db_test"
                        userId="root"
                        password="123456">
            <property name="nullCatalogMeansCurrent" value="true"/>
        </jdbcConnection> 

或者

"jdbc:mysql://localhost:3306/test?serverTimezone=Asia/Shanghai&generateSimpleParameterMetadata=true&useUnicode=true&characterEncoding=utf8&useSSL=false&nullCatalogMeansCurrent=true";

可以在資料庫連線地址後面加上

nullCatalogMeansCurrent=true

 

本文主要介紹的是關於Mysql8.0驅動getTables返回所有庫的表的相關內容,MySQL Connector/J 8.0版本驅動向下相容之前的5.5+版本MySQL,如果你使用的是5.5+版本MySQL,都可以升級成8.0版本驅動。

如果你是使用的5.X版本驅動,需要將Driver Class換成: com.mysql.cj.jdbc.Driver

需要注意的是:

8.0版本驅動DataSource相關的引數有變化:

比如8.0版本驅動將引數 nullCatalogMeansCurrent 的預設值由true改為了false,如果你使用DatabaseMetaData.getTables獲取所有的表資訊,8.0版本驅動將返回所有庫的表。

1 2 // 預設會返回所有庫的表,而不僅是datasource指定的庫 databaseMetaData.getTables(null, null, null, new String[]{
"TABLE"})
 

解決方案就是在連線池初始化時,將這個引數改為true,以HikariCP為例:

Java Config:

1 2 3 HikariConfig config = new HikariConfig(); ... config.addDataSourceProperty("nullCatalogMeansCurrent", true);

Spring Boot 配置:

1 spring.datasource.hikari.data-source-properties.nullCatalogMeansCurrent=true