代码生成(code-gen)

背景介绍

代码生成器引入了更加灵活和高效的 builder 模式,使得开发者能够快速生成符合需求的代码,同时保持代码的优雅和整洁。这个新特性旨在进一步提升开发效率,减少重复劳动,让开发者能够更加专注于业务逻辑的实现。

数据库支持:

MySql数据库 、Oracle数据库、Postgre数据库、达梦数据库、SQLServer数据库等

安装

DEMO工程下载

http://192.168.175.55:9888/mijiuye/code-gen.git

pom 依赖

<dependency>
    <groupId>com.sie.meta</groupId>
    <artifactId>sie-snest-code-generator</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

快速生成 在 CodeGenerator 中的 main 方法中直接添加生成器代码,并进行相关配置,然后直接运行即可生成代码。

代码示例

FastAutoGenerator.create(ConfigUtils.load("pg.properties"))
    .dataSourceConfig(builder -> {
        builder.databaseQueryClass(SQLQuery.class);
    })
    .strategyConfig(builder -> {
        builder.include("API_INFO");
    })
    .globalConfig(builder -> {
        builder.outputDir("C:\\Users\\29662\\Documents\\dynamic-group\\src\\main\\java\\com\\sie\\snest\\dynamic\\group\\model\\");
        builder.author("mijiuye");
    })
    .packageConfig(builder -> {
        builder.parent("com.sie.snest.dynamic.group");
        builder.version("1.0.0");
    })
    .templateEngine(new FreemarkerTemplateEngine())
    .execute();

全局配置 (GlobalConfig)

全局配置提供了对代码生成器整体行为的设置,包括输出目录、作者信息、lomback 集成、时间类型策略等。

方法说明

方法 说明 示例
disableOpenDir() 禁止自动打开输出目录 默认值:true
outputDir(String) 指定代码生成的输出目录 /opt/sie默认值: Windows:D://Linux/Mac:/tmp
author(String) 设置作者名 sie默认值: 配置文件中的作者名
commentDate(String) 设置注释日期格式 默认值:yyyy-MM-dd

示例配置 {#示例配置-1}


DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:3306/snest", "root", "123456").build();

可选配置

方法 说明 示例
dbQuery(IDbQuery) 数据库查询 new MySqlQuery(),只在SQLQuery下生效
schema(String) 数据库 schema(部分数据库适用) snest
databaseQueryClass(AbstractDatabaseQuery) 数据库查询方式 默认DefaultQuery.class(通用元数据), SQLQuery.class(SQL查询)
// 使用SQL查询的方式生成代码,属于旧的代码生成方式,通用性不是好,老的代码可以继续使用,适配数据库需要完成dbQuery和typeConvert的扩展,后期不再维护这种方式
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder("jdbc:mysql://127.0.0.1:3306/snest", "root", "123456")
.dbQuery(new MySqlQuery())
.databaseQueryClass(SQLQuery.class)
.build();

策略配置 (StrategyConfig)

策略配置是 snesst 代码生成器的核心部分,它允许开发者根据项目需求定制代码生成的规则,包括命名模式、表和字段的过滤、以及各个代码模块的生成策略。

方法说明

方法 说明 示例
enableCapitalMode 开启大写命名 默认值:false
enableSkipView 开启跳过视图 默认值:false
enableSchema 启用 schema 默认值:false,多 schema 场景时启用
addInclude(String…) 增加表匹配(内存过滤) addExclude互斥,只能配置一项,支持正则匹配,如^t_.*匹配所有以t_开头的表名
addExclude(String…) 增加表排除匹配(内存过滤) addInclude互斥,只能配置一项,支持正则匹配,如.*st$匹配所有以st结尾的表名
addTablePrefix(String…) 增加过滤表前缀  
addTableSuffix(String…) 增加过滤表后缀  
addFieldPrefix(String…) 增加过滤字段前缀  

编译配置(CompilerConfig)

编译配置支持能配置class文件,

方法 说明 示例
classpathEntries 设置三方库  
modulepathEntries 设置模块  
sourceFiles 设置源代码文件  
sourceLocations 设置源代码路径  
includes 设置包含  
excludes 设置排除  

数据库配置 (DataSourceConfig)

基础配置

属性 说明 示例
url jdbc 路径 jdbc:mysql://127.0.0.1:3306/snest
username 数据库账号 root
password 数据库密码 123456

包配置 (PackageConfig)

包配置用于定义生成代码的包结构,包括父包名、模块名、实体类包名、服务层包名等。

方法说明

方法 说明 示例
parent(String) 设置父包名 默认值:com.sie
moduleName(String) 设置父包模块名 默认值: 无
    pathInfo(Map<OutputFile, String>)