[MyBatis Generator]自动生成 User 类的同时会生成 UserKey 及 UserWithBlob 类的问题的解决

本文详细解析MyBatis Generator的配置技巧,包括如何正确设置targetProject以匹配项目结构,调整Example类生成策略,以及避免MySQL数据库中多表冲突导致的额外实体类生成。通过精确配置,确保代码生成符合项目需求。

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

注意事项
targetProject
targetProject 应该为目标文件所在的目录,与 maven 命令执行时所在目录的相对路径。Maven 插件在 IDEA 中运行的目录即为项目所在的根目录,因此生成的类文件在SpringBoot 项目中,应该在 src/main/java 路径下的包中,mapper 文件可以放在 src/main/resources 路径的文件夹中。
因此 <javaModelGenerator> 和 <javaClientGenerator> 都指定了 targetProject 为 src/main/java,再根据 targetPackage 存放到不同的包中;<sqlMapGenerator> 指定了 targetProject 为 src/main/resources,再根据 targetPackage 存放到不同的文件夹中。

UserExample
Mybatis Generator 默认生成实体类对应的 xxxExample 类,用于构造复杂的筛选条件。一般开发中会去掉这些 Example 类,在 <table> 标签中添加属性 enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" ,即可阻止生成此类。

UserKey 和 UserWithBlobs
对于 MySQL 数据库,在生成 User 实体类时,还会同时生成 Userkey 和 UserWithBlobs 实体类,原因在于 MySQL 不支持 catalogs 和 schema。在 MySQL 8.0 以上的版本中,在生成 User 表的实体类时,Mybatis Generator 会找到多张 User 表,包括 MySQL information schemas 中的多张 User 表,生成了多个 User 相关的实体类。
要保证只生成自己指定的 database 中的 User 表,首先要在 <jdbcConnection> 中的 connectionURL 中指定数据库的实例名,然后在 <jdbcConnection> 中添加相关配置信息,即 <property name="nullCatalogMeansCurrent" value="true"/>,即可保证只生成自己需要的 User 类。
 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值