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 需在<context>内,且部分版本需配合插件依赖如mybatis-generator-plugin) - 输出路径分项配置:
<javaModelGenerator targetPackage="com.example.model" targetProject="src/main/java"><sqlMapGenerator targetPackage="mapper" targetProject="src/main/resources"><javaClientGenerator targetPackage="com.example.mapper" targetProject="src/main/java">
模板文件注意事项
无论 MP 还是 MBG,自定义模板本质是 Freemarker 文件(.java 或 .ftl),需注意:
立即学习“Java免费学习笔记(深入)”;
- 变量命名要与生成器上下文一致,如 MP 常用
${table.name}、${field.name};MBG 常用<#list introspectedTable.columns as column> - 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或绝对路径 - 两者都需确保生成器运行时工作目录为项目根目录,否则相对路径易失效

















