MyBatis-Plus(簡稱 MP)是一個 MyBatis的增強工具塘淑,在 MyBatis 的基礎上只做增強不做改變奉芦,為簡化開發(fā)喝峦、提高效率而生。MP提供兩套生成方法,本著大道至簡的理論批糟,本文重點介紹一種快速生成的方法赚爵,一個Main方法即可。
一村怪、依賴引入
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.1.0</version>
</dependency>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.3</version>
</dependency>
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.18</version>
</dependency>
二秽浇、代碼生成
- 修改需生成的表名、前綴甚负、模塊名柬焕、作者等信息(最外部的static常量)审残,執(zhí)行main方法即可
- controller可生成rest風格和普通風格,相關配置在 .controllerBuilder() 后
- service相關自定義在.serviceBuilder() 后斑举,比如修改默認文件名
- 同理搅轿,mapper和entity的相關配置分別緊跟.mapperBuilder()和.entityBuilder()
package com.code.codegenerator;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
/**
* Description: <br/>
* date: 2023/9/24 10:26<br/>
*
* @author 小塵哥<br />
*/
public class CodeGenerator {
/**
* 需要生成代碼的數(shù)據(jù)庫表名
*/
private static final String TABLE_NAME = "t_books";
/**
* 表前綴,生成代碼時可忽略
*/
private static final String TABLE_NAME_SUFFIX = "t_";
/**
* 模塊名
*/
private static final String MODULE_PACKAGE = "book";
/**
* 作者
*/
private static final String AUTHOR = "小塵哥";
/**
* 輸出目錄
*/
private static final String OUT_PATH = "D:\\genCode";
public static void main(String[] args) {
FastAutoGenerator.create("jdbc:mysql://localhost:3306/mos_demo?characterEncoding=UTF-8&useUnicode=true&useSSL=false",
"root", "root")
// 全局配置
.globalConfig(builder -> {
builder.author(AUTHOR) // 設置作者
.commentDate("yyyy-MM-dd hh:mm:ss") //注釋日期
// .outputDir(System.getProperty("user.dir") + "/src/main/java") // 指定輸出目錄
.outputDir(OUT_PATH) // 指定輸出目錄
.disableOpenDir() //禁止打開輸出目錄富玷,默認打開
;
})
// 包配置
.packageConfig(builder -> {
builder.parent("com.mos.bzn." + MODULE_PACKAGE).mapper("dao"); // 設置父包名
// .pathInfo(Collections.singletonMap(OutputFile.xml, "D:\\genCode\\mappers")); // 設置mapperXml生成路徑
})
// 策略配置
.strategyConfig(builder -> {
builder.addInclude(TABLE_NAME) // 設置需要生成的表名
.addTablePrefix(TABLE_NAME_SUFFIX) // 設置過濾表前綴
// Entity 策略配置
.entityBuilder()
.enableLombok() //開啟 Lombok
.enableFileOverride() // 覆蓋已生成文件
.naming(NamingStrategy.underline_to_camel) //數(shù)據(jù)庫表映射到實體的命名策略:下劃線轉駝峰命
.columnNaming(NamingStrategy.underline_to_camel) //數(shù)據(jù)庫表字段映射到實體的命名策略:下劃線轉駝峰命
// Mapper 策略配置
.mapperBuilder()
.enableFileOverride() // 覆蓋已生成文件
// Service 策略配置
.serviceBuilder()
.enableFileOverride() // 覆蓋已生成文件
.formatServiceFileName("%sService") //格式化 service 接口文件名稱璧坟,%s進行匹配表名,如 UserService
.formatServiceImplFileName("%sServiceImpl") //格式化 service 實現(xiàn)類文件名稱凌彬,%s進行匹配表名沸柔,如 UserServiceImpl
// Controller 策略配置
.controllerBuilder()
.enableRestStyle()
.formatFileName("%sControl")
.enableFileOverride() // 覆蓋已生成文件
;
})
.execute();
}
}
小結
“君子生非異也,善假于物也”。當需要生產(chǎn)率的時候使用高效的工具铲敛,當需要深度的時候去研究內部實現(xiàn)褐澎,合適的時候做合適的事,合適的技術實現(xiàn)合適的需求伐蒋。