mybatis-plus 3.5.15模板配置已整合至strategyconfig,需用/javatemplate("/templates/entity.java")指定classpath相对路径,输出目录由globalconfig.outputdir统一控制;mbg则需在xml中分项配置targetproject及templatefile路径。

MyBatis 相关代码生成器(包括 MyBatis-Plus 3.5+ 和 MyBatis Generator)支持模板和输出路径的灵活自定义,关键在于区分工具类型、模板存放位置、路径写法及配置入口。
MyBatis-Plus 3.5.15 的模板与路径配置
从 3.5.6 起,模板配置已整合进 StrategyConfig,不再用独立的 TemplateConfig。
-
模板路径必须以 / 开头,且相对于 classpath(即 src/main/resources)。例如:
.javaTemplate("/templates/entity.java")表示模板文件放在src/main/resources/templates/entity.java - 推荐使用 FastAutoGenerator 链式配置,模板设置直接在对应 builder 中指定:
strategyConfig(builder -> { builder.entityBuilder() .javaTemplate("/templates/entity.java") .enableLombok(); builder.controllerBuilder() .javaTemplate("/templates/controller.java") .formatControllerFileName("%sController"); }) - 输出路径统一由 GlobalConfig 控制:
.outputDir("src/main/java"),所有生成文件(entity/mapper/service 等)都基于此目录按包结构展开
MyBatis Generator(MBG)的模板与路径配置
MBG 使用 Freemarker 模板,默认模板内置在 jar 包中;自定义需显式指定路径并确保资源可加载。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 模板文件建议放在
src/main/resources/generator/templates/下,如model.ftl - 在 XML 配置中通过
<property name="templateFile" value="src/main/resources/generator/templates/model.ftl"></property>引入(注意:该 property 需在<context></context>内,且部分版本需配合插件依赖如mybatis-generator-plugin) - 输出路径分项配置:
<javamodelgenerator targetpackage="com.example.model" targetproject="src/main/java"></javamodelgenerator><sqlmapgenerator targetpackage="mapper" targetproject="src/main/resources"></sqlmapgenerator><javaclientgenerator targetpackage="com.example.mapper" targetproject="src/main/java"></javaclientgenerator>
模板文件注意事项
无论 MP 还是 MBG,自定义模板本质是 Freemarker 文件(.java 或 .ftl),需注意:
- 变量命名要与生成器上下文一致,如 MP 常用
${table.name}、${field.name};MBG 常用 - Java 模板中若引用 Lombok 注解,需确保项目已引入 lombok 依赖,且 IDE 支持注解处理
- 首次使用自定义模板时,建议先复制官方默认模板(如 MP 的源码中 templates 目录或 MBG 的 github 示例)再修改,避免语法错误导致生成失败
常见路径问题排查
生成失败常因路径配置不准确,重点检查:
- MP:确认
/templates/entity.java是完整 classpath 路径,不是文件系统绝对路径;IDE 中该文件需在编译后出现在target/classes/templates/下 - MBG:XML 中
targetProject必须是 Maven 项目中的有效目录名(如src/main/java),不能写成./src/main/java或绝对路径 - 两者都需确保生成器运行时工作目录为项目根目录,否则相对路径易失效
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










