代碼生成工具
你是否因為經常寫重複的代碼而頭大,今天這個問題就解決了,你會愛上這個工具!話不多說,上乾貨。如果你覺得我這繁體字看不到的話,請忽略,看代碼。公司電腦都是繁體,我也是天天長見識。
首先引入依賴
<!--mybatisPlus代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<!--代碼生成的模板工具-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<!--這個是項目鏈接數據庫要有的動態數據源-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>dynamic-datasource-spring-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
<!--MybatisPlus集成springboot開箱即用-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
以上前第一個依賴是模板實現類,根據自動生成腳本使用的引擎模板自己可以換其他的,這點MyBatis-Plus官網有介紹。第二個是新版的代碼生成工具包,不兼容3.5.1以下的。如果是以下版本,請用之前的代碼生成代碼。第三第四個依賴是springboot集成mybatis-plus,同時使用多數據源。
生成腳本
可交互式代碼生成
package com.ex01.ysx;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import com.baomidou.mybatisplus.generator.fill.Column;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class CodeAutoGenerator {
public static final String DATABASE = "ysx";
public static final String URL = "jdbc:mysql://127.0.0.1:3306/";
public static final String USERNAME = "root";
public static final String PASSWORD = "123456";
public static void main(String args[]){
Generator();
}
public static void Generator(){
FastAutoGenerator.create(new DataSourceConfig.Builder(URL+DATABASE, USERNAME, PASSWORD))
// 全局配置
.globalConfig((scanner, builder) ->
builder.author(scanner.apply("请输入作者名称?"))
.fileOverride())
// 包配置
.packageConfig((scanner, builder) ->
builder.parent(scanner.apply("请输入父包名?"))
.entity(scanner.apply("请输入entity包名?"))
.mapper(scanner.apply("请输入mapper包名?"))
.xml(scanner.apply("请输入xml包名?默認mapper.xml,xml包自動在mapper內"))
.service(scanner.apply("请输入service包名?"))
.serviceImpl(scanner.apply("请输入serviceImpl包名?默認service.impl,impl默認在service以下"))
.controller(scanner.apply("请输入controller包名?"))
)
// 策略配置
.strategyConfig((scanner, builder) ->
builder.addInclude(getTables(scanner.apply("请输入表名,多个英文逗号分隔?所有输入 all")))
.controllerBuilder().enableRestStyle().enableHyphenStyle()
.entityBuilder().enableLombok()
.enableChainModel()
.enableTableFieldAnnotation()
.addTableFills(
new Column("create_time", FieldFill.INSERT)
).build())
// 模板引擎配置,默认 Velocity 可选模板引擎 Beetl 或 Freemarker
// .templateEngine(new BeetlTemplateEngine())
.templateEngine(new FreemarkerTemplateEngine())
.execute();
}
// 处理 all 情况
protected static List<String> getTables(String tables) {
return "all".equals(tables) ? Collections.emptyList() : Arrays.asList(tables.split(","));
}
}
以上代碼是快速生成,默認生成到D盤根目錄