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
|