代码生成

大约 2 分钟 约 501 字

BeetlSQL3 内置了一个 Rest 接口org.beetl.sql.starter.CodeGenController,用户可以导入此 Controller 来为自己系统提供代码生成 API

目前能根据表名生成 Entity,Mapper,SQL 文件,以及数据库的 markdown 格式文档,参考示例 (opens new window)

需要配置 bean

@Configuration
public class CodeGen {

    @Bean
    public CodeGenController codeGenController() {
        return new CodeGenController();
    }
}
1
2
3
4
5
6
7
8

代码生成

注意

注意,如果系统包含了多个 SQLManager,则不能使用 CodeGenController


List<SourceBuilder> sourceBuilder = new ArrayList<>();
SourceBuilder entityBuilder = new EntitySourceBuilder();
SourceBuilder mapperBuilder = new MapperSourceBuilder();
SourceBuilder mdBuilder = new MDSourceBuilder();

sourceBuilder.add(entityBuilder);
sourceBuilder.add(mapperBuilder);
sourceBuilder.add(mdBuilder);

SourceConfig config = new SourceConfig(sqlManager,sourceBuilder);
//如果有错误,抛出异常而不是继续运行 1
EntitySourceBuilder.getGroupTemplate().setErrorHandler(new ReThrowConsoleErrorHandler() );

ConsoleOnlyProject project = new ConsoleOnlyProject();
String tableName = "sys_user";
//可以在控制台看到生成的所有代码
config.gen(tableName,project);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

SourceConfig 是核心类,类通过 SQLManager 构造,另外一个参数是 SourceBuilder 列表。

SourceBuilder 代表了代码生成逻辑,比如生成 POJO 代码,生成 Mapper 代码,生成 Service 代码,生成数据库文档

BeetlSQL 内置了如下生成

  • EntitySourceBuilder 生成 POJO 代码
  • MapperSourceBuilder 生成 Mapper 代码
  • MDSourceBuilder 生成 markdown 文件
  • MDDocBuilder,生成一个数据库表文档,markdown 格式

你可以实现 SourceBuilder,以生成特定的代码或者文档,或者其他类型文档。

配置好 SourceConfig 后,需要使用一个 BaseProject 的子类,告诉生成代码存放在哪里,BeetlSQL3 提供如下 Project

  • ConsoleOnlyProject 仅仅输出到控制台,你可以把生成的代码复制到你需要的类里
  • SimpleMavenProject 当前工程是 maven 工程,输出成文件到 maven 工程里,不推荐,这样很容易覆盖以前生成好但有微调过的代码,除非你是第一次使用
  • StringOnlyProject 输出到字符串里:
StringOnlyProject project = new StringOnlyProject();
String tableName = "sys_user";
config.gen(tableName,project);
String content = project.getContent();
1
2
3
4

SourceConfig 类有很多配置选项,比如,使用 BigDecimal 还是 Double,每个 SourceBuilder 实现也可以设置不同属性。比如,配置生成的 java 类的包名。

详细使用查看 示例代码 S7CodeGen

上次编辑于: 2022年11月25日 13:03
贡献者: orange