MyBatis Generator:[WARNING] Table Configuration users matched more than one table
#在使用 MyBatis Generator 自动生成代码时出现如下警告,生成的文件与目标存在偏差。Java实体类代码一眼就能看出有问题
generatorConfig.xml 配置文件中指定了对应的数据表是 test 数据库中的 users 表(见如下配置文件中的部分代码),而最终生成的 mapper.xml 文件中同时存在着 performance_schema 中的 users 表和 test 中的 users 表的查询映射语句,而且缺少了针对主键的查询语句。
#问题解决:
在 MyBatis Generator官网 中对这一问题做出了解答。
大致翻译下:Mysql 无法正常支持 SQL catalogs 和 schema。因此,最好不要在 generator 配置文件中指定 catalog 以及schema,仅需指定数据表的名字并在 JDBC URL 中指定数据库即可。如果使用 mysql-connector-java 8.x 版本,generator 会为MySql中信息数据库(sys, information_schema, performance_schema)的表生成代码,若要避免这种操作,请在 JDBC URL 中加入属性“nullCatalogMeansCurrent=true”。
在 generatorConfig.xml 中的 标签下加入如上属性后问题得到解决,生成文件无误。我用的MySQL8.0.21,数据库连接信息必须加上“nullCatalogMeansCurrent=true”属性。如下所示:
<!--数据库连接的信息:驱动类、连接地址、用户名、密码 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/security"
userId="root"
password="root">
<!--MySQL 8.x 需要指定服务器的时区-->
<property name="serverTimezone" value="UTC"/>
<!--MySQL 不支持 schema 或者 catalog 所以需要添加这个-->
<!--参考 : http://www.mybatis.org/generator/usage/mysql.html-->
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>