跳到主要内容

flexmodel-codegen

Flexmodel的代码生成器模块,使用groovy脚本作为模板进行代码生成

  1. 引入maven依赖
<dependency>
<groupId>tech.wetech.flexmodel</groupId>
<artifactId>flexmodel-codegen</artifactId>
<version>LATEST</version>
</dependency>
  1. 使用示例

继承类tech.wetech.flexmodel.ApiDefinitionGenerator

class ListApiDefinitionGenerator extends ApiDefinitionGenerator {

@Override
def generate(PrintWriter out, GenerationContext context) {
def schemaName = context.getModelClass().getSchemaName()
def modelName = context.getModelClass().getModelName()
out.println "query MyListQuery( \$where: ${schemaName}_${modelName}_bool_exp) {"
out.println " ${schemaName}_list_${modelName}(where: \$where) {"
context.getModelClass().getAllFields().each {
if (!it.isRelationField()) {
out.println " ${it.fieldName}"
}
}
out.println " }"
out.println "}"
}
}

通过模板输出到目标对象中

ModelClass modelClass = GenerationTool.buildModelClass("com.example", dto.getDatasourceName(), entity);
GenerationContext generationContext = new GenerationContext();
generationContext.setModelClass(modelClass);
new ListApiDefinitionGenerator().generate(new PrintWriter(System.out), generationContext);

此为单文件的示例,tech.wetech.flexmodel.codegen.AbstractModelListGenerator实现多个模型输出到同一个文件中