30分钟搞定代码生成器模板定制:JeecgBoot低代码平台个性化开发指南
你还在为重复编写CRUD代码浪费时间?JeecgBoot代码生成器支持模板全自定义,本文将带你从0到1掌握模板开发技巧,实现"一次定制,终身复用"的高效开发模式。读完本文你将获得:模板目录结构解析、自定义模板编写规范、多场景模板适配方案、模板调试与部署全流程。
模板定制基础:JeecgBoot代码生成器架构
JeecgBoot代码生成器采用"模板引擎+配置驱动"架构,通过Velocity模板引擎解析.vm文件,结合数据库表结构自动生成前后端代码。核心实现类CgformEnum.java定义了模板路径常量:
// 单表模板配置示例
ONE(1, "one", "/jeecg/code-template-online", "default.one", "经典风格", new String[]{"vue3","vue","vue3Native"})
系统默认提供5种模板类型,覆盖单表、树表、一对多等常见场景,物理模板文件存放于classpath:jeecg/code-template-online目录,对应项目路径为jeecg-module-system/src/main/resources/jeecg/code-template-online。
模板文件结构解析
标准模板目录采用"分类+功能"的双层结构,以单表模板为例:
code-template-online/
├── default/
│ ├── one/ # 单表模板主目录
│ │ ├── controller.java.vm # 控制器模板
│ │ ├── service.java.vm # 服务层模板
│ │ ├── vue/ # 前端模板目录
│ │ │ ├── index.vue.vm # 列表页模板
│ │ │ └── form.vue.vm # 表单页模板
│ └── tree/ # 树形结构模板
└── jvxe/ # JVXE表格风格模板
模板命名遵循[功能].[类型].vm规则,如controller.java.vm表示后端控制器模板,系统会根据CgformEnum.java中的stylePath参数(如"default.one")定位具体模板文件。
三步实现自定义模板开发
1. 模板文件创建
在src/main/resources/jeecg/code-template-online目录下创建自定义模板目录,建议采用"业务域+风格"命名方式,如business/sale-order表示业务系统销售订单模板:
mkdir -p src/main/resources/jeecg/code-template-online/business/sale-order
touch src/main/resources/jeecg/code-template-online/business/sale-order/controller.java.vm
2. 模板内容编写
控制器模板示例(controller.java.vm):
package ${packageName}.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
import ${packageName}.service.${className}Service;
import ${packageName}.entity.${className}Entity;
/**
* 自定义风格控制器
* @author ${author}
* @date ${createTime}
*/
@RestController
@RequestMapping("/${moduleName}/${businessName}")
public class ${className}Controller {
@Resource
private ${className}Service ${className?uncap_first}Service;
/**
* 分页查询
*/
@GetMapping("/page")
public Result<Page<${className}Entity>> page(Page<${className}Entity> page, ${className}Entity ${className?uncap_first}) {
return Result.OK(${className?uncap_first}Service.page(page, new QueryWrapper<>(${className?uncap_first})));
}
// 自定义业务方法
@PostMapping("/customAction")
public Result<?> customAction(@RequestBody ${className}Entity entity) {
// 业务逻辑实现
return Result.OK();
}
}
模板变量说明:
${packageName}: 包名${className}: 类名${author}: 作者(从配置获取)${moduleName}: 模块名
3. 模板配置注册
修改CgformEnum.java添加自定义模板枚举:
/**
* 销售订单模板
*/
SALE_ORDER(1, "saleOrder", "/jeecg/code-template-online", "business.sale-order", "业务销售订单风格", new String[]{"vue3"})
高级技巧:多场景模板适配方案
1. 条件渲染实现
在模板中使用Velocity条件语法实现差异化生成:
#if($table.hasRemark)
/**
* ${table.remark}
*/
#end
2. 多风格前端模板
通过vueStyle参数支持多版本前端框架:
new String[]{"vue3","vue","vue3Native"} // 支持Vue3包装、Vue2、Vue3原生风格
3. 模板继承与复用
创建公共模板片段(如common/toolbar.vm),通过Velocity include指令复用:
#include("/jeecg/code-template-online/common/toolbar.vm")
模板调试与部署流程
- 本地调试:修改模板后无需重启服务,通过代码生成器界面直接测试
- 版本控制:模板文件纳入Git管理,建议创建
templates分支专门维护 - 部署方式:
- 开发环境:直接修改resources目录下模板
- 生产环境:通过配置中心动态加载外部模板
常见问题解决方案
- 模板不生效:检查CgformEnum.java中stylePath是否与模板路径匹配
- 变量渲染错误:使用
$!{var}避免空值异常,如$!{table.comment} - 格式错乱:使用Velocity的#trim指令清除多余空白
总结与进阶展望
通过本文介绍的模板定制方法,开发者可构建符合企业规范的标准化代码生成体系。JeecgBoot代码生成器支持从简单CRUD到复杂业务逻辑的全场景覆盖,结合AI辅助编码可进一步提升开发效率。下期将介绍"基于AI的模板自动优化"技术,敬请关注。
点赞+收藏本文,获取《JeecgBoot模板开发速查手册》完整版,包含20+常用模板片段与调试工具包。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



