快速生成代码工具: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进行操作即可轻松地生成代码并提高开发效率。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/192341.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-01 09:57
下一篇 2024-12-01 09:57

相关推荐

  • Python周杰伦代码用法介绍

    本文将从多个方面对Python周杰伦代码进行详细的阐述。 一、代码介绍 from urllib.request import urlopen from bs4 import Bea…

    编程 2025-04-29
  • Python字符串宽度不限制怎么打代码

    本文将为大家详细介绍Python字符串宽度不限制时如何打代码的几个方面。 一、保持代码风格的统一 在Python字符串宽度不限制的情况下,我们可以写出很长很长的一行代码。但是,为了…

    编程 2025-04-29
  • Python字典去重复工具

    使用Python语言编写字典去重复工具,可帮助用户快速去重复。 一、字典去重复工具的需求 在使用Python编写程序时,我们经常需要处理数据文件,其中包含了大量的重复数据。为了方便…

    编程 2025-04-29
  • Ojlat:一款快速开发Web应用程序的框架

    Ojlat是一款用于快速开发Web应用程序的框架。它的主要特点是高效、易用、可扩展且功能齐全。通过Ojlat,开发人员可以轻松地构建出高质量的Web应用程序。本文将从多个方面对Oj…

    编程 2025-04-29
  • Python基础代码用法介绍

    本文将从多个方面对Python基础代码进行解析和详细阐述,力求让读者深刻理解Python基础代码。通过本文的学习,相信大家对Python的学习和应用会更加轻松和高效。 一、变量和数…

    编程 2025-04-29
  • 仓库管理系统代码设计Python

    这篇文章将详细探讨如何设计一个基于Python的仓库管理系统。 一、基本需求 在着手设计之前,我们首先需要确定仓库管理系统的基本需求。 我们可以将需求分为以下几个方面: 1、库存管…

    编程 2025-04-29
  • Python满天星代码:让编程变得更加简单

    本文将从多个方面详细阐述Python满天星代码,为大家介绍它的优点以及如何在编程中使用。无论是刚刚接触编程还是资深程序员,都能从中获得一定的收获。 一、简介 Python满天星代码…

    编程 2025-04-29
  • 写代码新手教程

    本文将从语言选择、学习方法、编码规范以及常见问题解答等多个方面,为编程新手提供实用、简明的教程。 一、语言选择 作为编程新手,选择一门编程语言是很关键的一步。以下是几个有代表性的编…

    编程 2025-04-29
  • Python实现简易心形代码

    在这个文章中,我们将会介绍如何用Python语言编写一个非常简单的代码来生成一个心形图案。我们将会从安装Python开始介绍,逐步深入了解如何实现这一任务。 一、安装Python …

    编程 2025-04-29
  • 怎么写不影响Python运行的长段代码

    在Python编程的过程中,我们不可避免地需要编写一些长段代码,包括函数、类、复杂的控制语句等等。在编写这些代码时,我们需要考虑代码可读性、易用性以及对Python运行性能的影响。…

    编程 2025-04-29

发表回复

登录后才能评论