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/zh-hant/n/192341.html