MyBatis Generator 自动生成代码错误

在使用MyBatis Generator时遇到警告:Table Configuration users matched more than one table。原因是Mysql不支持SQL catalogs和schema。解决方案是在generatorConfig.xml中添加属性`nullCatalogMeansCurrent=true`到JDBC URL,确保只生成目标数据库的代码,从而解决代码生成错误。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值