Jeecg生成的代码不合口味?来改动一下

前言

在使用Jeecg二开的过程中,体验到了代码生成器的便捷所在,非常的快速就能够基于数据库中的表生成出一套前后端都涵盖的CRUD代码来。但是Jeecg的模板并没有遵循RESTful风格规范,并且使用了Result.error来返回错误的情况而不是抛出异常来。如果我们能让生成出来的代码符合我们的口味,这也能让我们在随后的开发过程更加的舒适。

先看看官方文档

生成器官方文档:doc.jeecg.com/2043918
官方文档给出了Online表单中代码生成器模板的路径:jeecg-boot-module-system/jeecg.code-template-online(注意是online后缀的,无后缀的是已弃用的GUI的模板)

image.png

我们以一对多内嵌Table模板为示例进行演示,基于几个方面进行修改:

  1. 符合RESTful风格API
  2. 去掉接口的I前缀
  3. Mapper和Service接口去掉冗余的public修饰符
  4. ServiceImpl中使用@Resource进行Mapper注入,因为@Autowired对于Mapper在idea会爆红
  5. Controller的getById接口当未查询到数据时抛出异常而不是返回Result.error()
  6. 基于ResponseAdvice将返回值改为实体类型而不是Result<?>

首先进入jeecg-boot-module-system/jeecg.code-template-online如下图所选中的包

image.png

1. 符合RESTful风格API

打开controller模板${entityName}Controller.javai通过搜索功能分别进行修改

@GetMapping(value = "/list")
@PostMapping(value = "/add")
@PutMapping(value = "/edit")
@DeleteMapping(value = "/delete")
@GetMapping(value = "/queryById")
@GetMapping(value = "/query${sub.entityName}ByMainId")
复制代码

修改为

@GetMapping("/list")
@PostMapping
@PutMapping
@DeleteMapping
@GetMapping
@GetMapping("/${sub.entityName}ByMainId")
复制代码

打开vue.${entityName}.vuei搜索url关键词

url: {
  list: '${urlPrefix}/list',
  delete: '${urlPrefix}/delete',
  deleteBatch: '${urlPrefix}/deleteBatch',
  exportXlsUrl: '${urlPrefix}/exportXls',
  importExcelUrl: '${urlPrefix}/importExcel',
},

修改为

url: {
  list: '${urlPrefix}/list',
  delete: '${urlPrefix}',
  deleteBatch: '${urlPrefix}/batch',
  exportXlsUrl: '${urlPrefix}/exportXls',
  importExcelUrl: '${urlPrefix}/importExcel',
},
复制代码

${entityName}Form.vuei

        url: {
          add: "/${entityPackage}/${entityName?uncap_first}/add",
          edit: "/${entityPackage}/${entityName?uncap_first}/edit",
<#list subTables as sub><#rt/>
          ${sub.entityName?uncap_first}: {
            list: '/${entityPackage}/${entityName?uncap_first}/query${sub.entityName}ByMainId'
          },
</#list>
        }
}

修改为:

url: {
          add: "zu/${entityName?uncap_first}",
          edit: "zu/${entityName?uncap_first}",
<#list subTables as sub><#rt/>
          ${sub.entityName?uncap_first}: {
            list: '/zu/${entityName?uncap_first}/${sub.entityName}ByMainId'
          },
</#list>
        }
复制代码

还剩下vue.subTables.[1-n]SubTable.vuei

url: {
  listByMainId: '${urlPrefix}/query${sub.entityName}ByMainId',
},

修改为

url: {
  listByMainId: '${urlPrefix}/${sub.entityName}ByMainId',
},
复制代码

于上我们就完成了Jeecg中RESTful风格的模板调整啦,未完待续。