问题
Mybatis 逆向工程生成users表实体,发现生成对象并非连接表中的字段结构
我的字段结构
实际生成的实体结构
问题原因查找
- 怀疑可能连错了库
- 不过其他的实体都是正常的,这个情况排除
- 怀疑可能生成了MySql中的一些保留表
果然,在performance_schema
数据库中,有表users
跟实体的属性一致
那么,为什么Mybatis会找到这些表并且去执行生成实体的逻辑呢?
对于 MySQL 数据库,在生成 User 实体类时,还会同时生成 Userkey 和 UserWithBlobs 实体类,原因在于 MySQL 不支持 catalogs 和 schema。在 MySQL 8.0 以上的版本中,在生成 User 表的实体类时,Mybatis Generator 会找到多张 User 表,包括 MySQL information schemas 中的多张 User 表,生成了多个 User 相关的实体类。
问题解决
- 修改我的表名称
- 这个好改。~~~
- 想办法不让MySql保留表影响到我的逆向工程
要保证只生成自己指定的 database 中的 User 表,首先要在 <jdbcConnection> 中的 connectionURL 中指定数据库的实例名,然后在 <jdbcConnection> 中添加相关配置信息,即 <property name="nullCatalogMeansCurrent" value="true"/>,即可保证只生成自己需要的 User 类。
配置如下:
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/xxx"
userId="xxx"
password="xxx">
<property name="nullCatalogMeansCurrent" value="true"/>
</jdbcConnection>