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