mybatis-generator-gui-extension 模板定制教程:用 Velocity 与 YAML 从零打造专属代码生成模板

mybatis-generator-gui-extension 模板定制教程:用 Velocity 与 YAML 从零打造专属代码生成模板
mybatis-generator-gui-extension 模板定制教程用 Velocity 与 YAML 从零打造专属代码生成模板【免费下载链接】mybatis-generator-gui-extension图形化MBG内置丰富插件,可生成Service、Controller、View配置简单。 A powerful GUI tool for MyBatisGenerator(MBG)项目地址: https://gitcode.com/gh_mirrors/my/mybatis-generator-gui-extensionmybatis-generator-gui-extension 是一款图形化 MyBatis GeneratorMBG工具内置丰富插件可一键生成 Service、Controller、View 等代码。本文将带你完成 mybatis-generator-gui-extension 模板定制全流程从认识 Velocity 模板引擎与 YAML 配置文件到动手编写自己的代码生成模板打造完全符合团队规范的专属代码生成器。即使你是第一次接触模板定制的新手跟着本教程也能轻松上手。 什么是模板定制先认识 SCVX 生成插件默认情况下MBG 只能生成实体类、Mapper 接口和 XML 映射文件。而 mybatis-generator-gui-extension 内置的 SCVXGeneratorPlugin 插件让你额外生成Service、Controller、ViewHTML以及其他任意层级的代码这正是模板定制的核心能力。插件的工作流程非常简单共三步读取你配置的 YAML 模板配置templateConfig 列表用Velocity 模板引擎渲染每个.vm模板文件并注入当前表、字段等上下文变量按配置的目录、包名、文件名把渲染结果写入磁盘。整个渲染逻辑都封装在 SCVXGeneratorPlugin.java 中模板变量定义则可在 TemplateConfig.java 中查看。所以模板定制 写一个.vm文件 写一段 YAML 配置仅此而已。 两个核心配置文件内置模板与 YAML 配置项目自带了可直接参考的模板资源目录template/java/service.vmService 层模板template/java/controller.vmController 层模板template/java/restController.vmRESTful Controller 模板template/html/form.vm 与 template/html/list.vmHTML 表单与列表模板template/test.vm官方示例模板几乎列出了全部可用变量template/README.md模板约定的完整说明而 YAML 配置的默认样例位于 config.yml。在图形界面中你可以在「MVC 配置」标签页中勾选生成插件并把这段 YAML 填入配置框对应 ProjectConfig.java 中的 scvxConfigYml 字段。⚡ Velocity 模板基础语法速览模板定制的第一块拼图是 Velocity。别担心它非常简单只需掌握 3 个语法即可开始语法作用示例${变量}输出变量值${table.entityName}输出实体名#foreach循环遍历#foreach($column in $table.columns)#if条件判断#if($column.primaryKey)#set定义变量#set($name User)其中$!{变量}与${变量}的区别值得注意$!在变量为空时输出空字符串而非$xxx原文实战中建议多用$!避免生成错误内容。官方示例 test.vm 的注释里也明确提示使用 velocity 模板引擎请参考 velocity 的用法。️ YAML 配置详解四个属性定义输出位置模板定制的第二块拼图是 YAML。每个生成项由四个属性组成templateConfig: # 模板文件名相对 template 目录 - template: java/service.vm # 目标文件夹 destDir: src/main/java # 目标包 destPackage: ${basePackage}.service # 目标文件名 destFileName: ${entityName}Service.java四个属性含义如下template模板文件在template/目录下的相对路径destDir输出到项目中的哪个文件夹destPackage目标包名支持${basePackage}、${entityName}等变量destFileName输出文件名支持${entityName}、${entityLowerCamel}等变量。在渲染路径时${basePackage}会被替换为根包名${entityName}会替换为实体名见 SCVXGeneratorPlugin.java 中的路径拼接逻辑。️ 实战十分钟写一个专属 Service 模板下面我们动手写一个带注释的 Service 接口模板体验完整的模板定制流程。第一步在template/java/下新建文件myService.vmpackage $!table.get(basePackage).service; /** * $!table.tableComment 的 Service 接口 * 由 mybatis-generator-gui-extension 模板自动生成 */ public interface ${table.entityName}Service { /** * 根据主键查询 $!table.tableComment */ ${table.entityName} getById(${table.primaryKeyClass} id); /** * 新增 $!table.tableComment */ int save(${table.entityName} record); /** * 根据条件查询 $!table.tableComment */ java.util.List${table.entityName} listByCondition(${table.exampleName} example); }第二步在图形界面「MVC 配置」标签页填入 YAMLtemplateConfig: - template: java/myService.vm destDir: src/main/java destPackage: ${basePackage}.service destFileName: ${entityName}Service.java第三步选中数据库表点击「生成代码」。检查项目目录${basePackage}.service包下就会多出UserService.java、OrderService.java等按表生成的文件了️ 注释标签约定让模板读取你的业务配置模板定制的高级玩法是在表或字段注释中写入形如#标签(参数)的标记它们会被解析进模板上下文供模板通过get(key)/contains(key)读取。项目内置了几种常用标签#label(text)界面标签如表格表头、表单 label#help(text)悬停帮助信息#prompt(text)输入框提示#search(equal,like,between,larger,less)搜索配置展开为search.like、search.between等键值。例如字段注释写#search(like,equal)模板中即可用$!column.contains(search.like)判断是否启用模糊搜索。完整约定请阅读 template/README.md解析规则可参考 ConfigMatcher.java。 模板可用变量速查表从 test.vm 可以提取出最常用的变量Table 级别${table.actualName}表名、${table.entityName}实体名、${table.entityLowerCamel}实体小驼峰、${table.exampleName}Example 名、${table.mapperName}Mapper 名、${table.entityPackage}、${table.mapperPackage}、${table.ddl}建表 SQL仅 MySQL。Column 级别在#foreach($column in $table.columns)内${column.actualName}、${column.fieldName}、${column.fieldType}、${column.getterName}、${column.setterName}、${column.equalMethod}、${column.likeMethod}、${column.ddl}等几乎覆盖了 Example 的所有查询方法命名。此外ProjectConfig 中标注了ExportToPlugin的配置如basePackage、entityPackage、mapperPackage等也会注入模板可通过$!table.get(basePackage)方式读取。 模板定制常见问题与排查技巧Q1模板文件修改后没有生效模板从 classpath 加载若你是以源码方式运行请确认重新编译后target/classes/template/下有对应文件若打包运行需重新打包。Q2生成的代码中出现了$xxx原文说明该变量为空改用$!xxx语法输出空字符串即可。Q3生成的文件不在预期目录检查 YAML 中destDir、destPackage的层级关系实际路径 项目根目录 destDir 包名转目录 文件名路径拼接代码见 SCVXGeneratorPlugin.java。Q4不确定模板里有哪些变量可用直接把template: test.vm配进 YAML 生成一次日志会输出完整的表结构变量树照着抄即可。 结语到这里你已经掌握了 mybatis-generator-gui-extension 模板定制的全部核心知识Velocity 语法、YAML 四项配置、注释标签约定与变量速查。剩下的就是发挥想象力——无论是生成 Swagger 文档、DTO、VO还是前后端接口契约只要写一个.vm模板并加一段 YAML 配置mybatis-generator-gui-extension 都能帮你批量产出。快打开工具定制你的第一套专属代码生成模板吧【免费下载链接】mybatis-generator-gui-extension图形化MBG内置丰富插件,可生成Service、Controller、View配置简单。 A powerful GUI tool for MyBatisGenerator(MBG)项目地址: https://gitcode.com/gh_mirrors/my/mybatis-generator-gui-extension创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

最新新闻

日新闻

周新闻

月新闻