注意事项
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 类。