flexmodel-codegen
Flexmodel的代码生成器模块,使用groovy脚本作为模板进行代码生成
- 引入maven依赖
<dependency>
<groupId>tech.wetech.flexmodel</groupId>
<artifactId>flexmodel-codegen</artifactId>
<version>LATEST</version>
</dependency>
- 使用示例
继承类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
实现多个模型输出到同一个文件中