您的位置:

快速生成代码工具:FastAutoGenerator

FastAutoGenerator是一个快速生成代码的工具,它允许开发人员快速生成基于Lombok、MyBatis、Spring等框架的Java代码。它可以自动生成DAO、Service、Controller等层级的代码,并且提供简洁易懂的调用API,节省了开发人员大量的时间和精力。

一、快速生成MyBatis代码

FastAutoGenerator可以根据数据库表自动生成MyBatis代码,生成的代码包括Model、Mapper、Mapper.xml文件。

以下是使用FastAutoGenerator生成MyBatis代码的示例:


public class MyBatisGeneratorTest {

    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/fast_autogenerator_test";
        String username = "root";
        String password = "root";
        String driverClassName = "com.mysql.jdbc.Driver";
        String tableNames = "user";

        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(url);
        dataSourceConfig.setUsername(username);
        dataSourceConfig.setPassword(password);
        dataSourceConfig.setDriverClassName(driverClassName);
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir("D:/workspace/fast_autogenerator/src/test/java");
        globalConfig.setAuthor("xkcoding");
        globalConfig.setOpen(false);
        globalConfig.setSwagger2(true);
        globalConfig.setFileOverride(true);
        globalConfig.setActiveRecord(true);
        globalConfig.setEnableCache(false);
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(true);
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setTablePrefix(new String[]{"t_", "tsys_"});
        strategyConfig.setInclude(tableNames.split(","));
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setController("/templates/controller.java");
        templateConfig.setService("/templates/service.java");
        templateConfig.setServiceImpl("/templates/serviceImpl.java");
        AutoGenerator mpg = new AutoGenerator();
        mpg.setGlobalConfig(globalConfig);
        mpg.setDataSource(dataSourceConfig);
        mpg.setStrategy(strategyConfig);
        mpg.setTemplate(templateConfig);
        mpg.execute();
    }
}

在上面的示例中,首先通过设置DataSourceConfig对象来连接数据库。然后通过设置GlobalConfig对象来指定生成的代码输出路径、作者、是否打开生成后的代码目录等级等参数。接着,通过设置StrategyConfig对象来指定生成哪些表的代码、表名前缀、表名生成策略等参数。最后,通过设置TemplateConfig对象来指定生成的代码模板,以及AutoGenerator对象进行代码的生成。

二、快速生成DTO、DAO、Service、Controller层代码

在使用FastAutoGenerator生成代码时,我们可以根据需要生成的层级代码来选择不同的模板,如下面的示例可以生成基于Spring MVC框架的DTO、DAO、Service、Controller层级代码:


public class FastAutoGeneratorTest {

    public static void main(String[] args) throws Exception {
        String url = "jdbc:mysql://localhost:3306/fast_autogenerator_test";
        String username = "root";
        String password = "root";
        String driverClassName = "com.mysql.jdbc.Driver";
        String tableNames = "user";

        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(url);
        dataSourceConfig.setUsername(username);
        dataSourceConfig.setPassword(password);
        dataSourceConfig.setDriverClassName(driverClassName);
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir("D:/workspace/fast_autogenerator/src/test/java");
        globalConfig.setAuthor("xkcoding");
        globalConfig.setOpen(false);
        globalConfig.setSwagger2(true);
        globalConfig.setFileOverride(true);
        globalConfig.setActiveRecord(true);
        globalConfig.setEnableCache(false);
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(true);
        TemplateConfig templateConfig = new TemplateConfig();
        templateConfig.setDto("/templates/dto.java");
        templateConfig.setDao("/templates/dao.java");
        templateConfig.setXml("/templates/mapper.xml");
        templateConfig.setService("/templates/service.java");
        templateConfig.setServiceImpl("/templates/serviceImpl.java");
        templateConfig.setController("/templates/controller.java");
        AutoGenerator mpg = new AutoGenerator();
        mpg.setGlobalConfig(globalConfig);
        mpg.setDataSource(dataSourceConfig);
        mpg.setTemplate(templateConfig);
        mpg.execute();
    }
}

在这个示例中,我们设置了DTO、DAO、Service、Controller等多个代码层级的模板。生成代码的过程和之前的示例非常相似,只需调用execute()方法即可生成代码。

三、快速生成基于Lombok注解的代码

FastAutoGenerator支持生成基于Lombok注解的Java代码。在生成代码时,我们只需要在模板中添加Lombok注解即可,如下面的示例:


@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@ToString
public class User {
    private Long id;
    private String username;
    private String password;
    private Integer age;
    private String email;
    private Boolean status;
}

在这个示例中,我们使用了Lombok的@Getter、@Setter、@NoArgsConstructor、@AllArgsConstructor、@ToString注解来生成User类。在生成MyBatis表映射文件时,我们只需要设置MybatisPlus的配置即可,示例代码如下:


public class MyBatisGeneratorTest {

    public static void main(String[] args) {
        String url = "jdbc:mysql://localhost:3306/fast_autogenerator_test";
        String username = "root";
        String password = "root";
        String driverClassName = "com.mysql.jdbc.Driver";
        String tableNames = "user";

        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        dataSourceConfig.setUrl(url);
        dataSourceConfig.setUsername(username);
        dataSourceConfig.setPassword(password);
        dataSourceConfig.setDriverClassName(driverClassName);
        GlobalConfig globalConfig = new GlobalConfig();
        globalConfig.setOutputDir("D:/workspace/fast_autogenerator/src/test/java");
        globalConfig.setAuthor("xkcoding");
        globalConfig.setOpen(false);
        globalConfig.setSwagger2(true);
        globalConfig.setFileOverride(true);
        globalConfig.setActiveRecord(true);
        globalConfig.setEnableCache(false);
        globalConfig.setBaseResultMap(true);
        globalConfig.setBaseColumnList(true);
        globalConfig.setEntityName("%sDO");
        globalConfig.setMapperName("%sMapper");
        globalConfig.setXmlName("%sMapper");
        globalConfig.setServiceName("%sService");
        globalConfig.setServiceImplName("%sServiceImpl");
        globalConfig.setControllerName("%sController");
        StrategyConfig strategyConfig = new StrategyConfig();
        strategyConfig.setTablePrefix(new String[]{"t_", "tsys_"});
        strategyConfig.setInclude(tableNames.split(","));
        strategyConfig.setNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
        strategyConfig.setEntityLombokModel(true);
        strategyConfig.setEntitySerialVersionUID(true);
        strategyConfig.setEntityTableFieldAnnotationEnable(true);
        templateConfig.setController("/templates/controller.java");
        templateConfig.setService("/templates/service.java");
        templateConfig.setServiceImpl("/templates/serviceImpl.java");
        AutoGenerator mpg = new AutoGenerator();
        mpg.setGlobalConfig(globalConfig);
        mpg.setDataSource(dataSourceConfig);
        mpg.setStrategy(strategyConfig);
        mpg.setTemplate(templateConfig);
        mpg.execute();
    }
}

通过设置strategyConfig.setEntityLombokModel(true)参数,我们可以开启生成基于Lombok注解的实体类。

四、快速生成API文档

FastAutoGenerator可以生成Swagger API文档,让我们的API接口变得更加友好易懂。我们只需要在GlobalConfig对象中设置swagger2为true即可:


GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setSwagger2(true);

在生成的代码中,我们可以看到类上会自动添加注解@Api和@ApiModelProperty。我们启动应用后,在浏览器访问http://localhost:8080/swagger-ui.html地址,就可以浏览并测试我们的API接口了。

五、快速生成多线程代码

FastAutoGenerator还可以生成基于多线程的代码,例如线程池代码和FutureTask代码。

以下是使用FastAutoGenerator生成FutureTask代码的示例:


public class FutureTaskTest {

    public static void main(String[] args) throws Exception {
        String taskName = "custom";
        String outputDir = "D:/workspace/fast_autogenerator/src/test/java";
        String packageName = "com.xkcoding.async.task";
        String className = "CustomFutureTask";
        FutureTaskConfig config = new FutureTaskConfig();
        config.setTaskName(taskName);
        config.setOutputDir(outputDir);
        config.setPackageName(packageName);
        config.setClassName(className);
        config.setReturnType("String");
        config.setParamsTypeNames(Collections.singletonList("Integer"));
        config.setTaskCode(
                "Thread.sleep(1000);\n" +
                "System.out.println(\"Task [\" + param + \"] was complete, taskName: \" + taskName);\n" +
                "return \"Task [\" + param + \"] was complete, taskName: \" + taskName;");
        config.setImportPackages(Collections.singletonList("java.lang.Thread"));
        AutoGenerator mpg = new AutoGenerator();
        mpg.setConfig(config);
        mpg.execute();
    }
}

在这个示例中,我们通过设置FutureTaskConfig对象来生成FutureTask代码,其中包括任务名称、代码输出路径、包名、类名、返回类型、参数类型(这里使用了Integer类型)、任务代码和引入的包等信息。

总结

FastAutoGenerator是一个快速生成代码的工具,它可以帮助开发人员快速生成基于Lombok、MyBatis、Spring等框架的Java代码。在使用FastAutoGenerator时,我们只需按照文档提供的API进行操作即可轻松地生成代码并提高开发效率。