关于mybatis generator无法根据主键生成selectByPrimaryKey等一系列方法的问题

tech2022-11-30  120

主要参考文档:参考文档1 参考文档2 在网上查询了很久,主要有两种解决方法

降低mysql-connector-java的jar包版本,但网上多数为使用mysql5 而笔者使用的是mysql8,降低版本略为麻烦,遂放弃。

在generatorConfig.xml配置文件中的中增加

<property name="useInformationSchema" value="true"/>

试过以上方法没有用以后,又是一番查找。


在之前使用H2数据库的时候,model文件夹下并没有出现

根据MyBatis Generator官方文档的提示是:

If you are using version 8.x of Connector/J you may notice that the generator attempts to generate code for tables in the MySql information schemas (sys, information_schema, performance_schema, etc.) This is probably not what you want! To disable this behavior, add the property “nullCatalogMeansCurrent=true” to your JDBC URL. For example:

翻译过来即:

如果您使用的是Connector / J的8.x版,您可能会注意到生成器尝试为MySql信息模式(sys,information_schema,performance_schema等)中的表生成代码。这可能不是您想要的! 要禁用此行为,请将属性“nullCatalogMeansCurrent = true”添加到JDBC URL。

发现控制台中也报错:mysql数据库中也确实存在多个user表。 这样的原因在于 MySQL 不支持 catalogs 和 schema。在 MySQL 8.0 以上的版本中,在生成 User 表的实体类时,Mybatis Generator 会找到多张 User 表,包括 MySQL information schemas 中的多张 User 表,生成了多个 User 相关的实体类。

所以要保证只生成自己指定的 database 中的 User 表,首先要在 中的 connectionURL 中指定数据库的实例名,然后在 中添加相关配置信息,即可保证只生成自己需要的 User 类。添加以下这句即可:

<property name="nullCatalogMeansCurrent" value="true" />
最新回复(0)