MyBatisPlus代碼生成器的使用示例
AutoGenerator 是 MyBatis-Plus 的代碼生成器,通過(guò) AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各個(gè)模塊的代碼,極大的提升了開發(fā)效率。
導(dǎo)入依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>io.swagger</groupId>
<artifactId>swagger-annotations</artifactId>
<version>1.5.19</version>
</dependency>
更詳細(xì)的代碼生成器配置請(qǐng)查看官方文檔:https://baomidou.com/pages/061573/#superentityclass
表結(jié)構(gòu)

當(dāng)前項(xiàng)目結(jié)構(gòu)

配置代碼生成器
1、globalConfig 全局策略配置
outputDir
- 生成文件的輸出目錄
- 默認(rèn)值:
D 盤根目錄
fileOverride
- 是否覆蓋已有文件
- 默認(rèn)值:
false
open
- 是否打開輸出目錄
- 默認(rèn)值:
true
enableCache
- 是否在 xml 中添加二級(jí)緩存配置
- 默認(rèn)值:
false
開發(fā)人員
- 默認(rèn)值:
null
kotlin
- 開啟 Kotlin 模式
- 默認(rèn)值:
false
swagger2
- 開啟 swagger2 模式
- 默認(rèn)值:
false
activeRecord
- 開啟 ActiveRecord 模式
- 默認(rèn)值:
false
baseResultMap
- 開啟 BaseResultMap
- 默認(rèn)值:
false
baseColumnList
- 開啟 baseColumnList
- 默認(rèn)值:
false
dateType
- 時(shí)間類型對(duì)應(yīng)策略
- 默認(rèn)值:
TIME_PACK
entityName
- 實(shí)體命名方式
- 默認(rèn)值:
null例如:%sEntity生成UserEntity
mapperName
- mapper 命名方式
- 默認(rèn)值:
null例如:%sDao生成UserDao
xmlName
- Mapper xml 命名方式
- 默認(rèn)值:
null例如:%sDao生成UserDao.xml
serviceName
- service 命名方式
- 默認(rèn)值:
null例如:%sBusiness生成UserBusiness
serviceImplName
- service impl 命名方式
- 默認(rèn)值:
null例如:%sBusinessImpl生成UserBusinessImpl
controllerName
- controller 命名方式
- 默認(rèn)值:
null例如:%sAction生成UserAction
idType
- 指定生成的主鍵的 ID 類型
- 默認(rèn)值:
null
2、dataSourceConfig 數(shù)據(jù)源配置
dbQuery
- 數(shù)據(jù)庫(kù)信息查詢類
- 默認(rèn)由
dbType類型決定選擇對(duì)應(yīng)數(shù)據(jù)庫(kù)內(nèi)置實(shí)現(xiàn)
? 實(shí)現(xiàn) IDbQuery 接口自定義數(shù)據(jù)庫(kù)查詢 SQL 語(yǔ)句 定制化返回自己需要的內(nèi)容
dbType
- 數(shù)據(jù)庫(kù)類型
- 該類內(nèi)置了常用的數(shù)據(jù)庫(kù)類型【必須】
schemaName
- 數(shù)據(jù)庫(kù) schema name
- 例如
PostgreSQL可指定為public
typeConvert
- 類型轉(zhuǎn)換
- 默認(rèn)由
dbType類型決定選擇對(duì)應(yīng)數(shù)據(jù)庫(kù)內(nèi)置實(shí)現(xiàn)
? 實(shí)現(xiàn) ITypeConvert 接口自定義數(shù)據(jù)庫(kù) 字段類型 轉(zhuǎn)換為自己需要的 java 類型,內(nèi)置轉(zhuǎn)換類型無(wú)法滿足可實(shí)現(xiàn) IColumnType 接口自定義
url
- 驅(qū)動(dòng)連接的 URL
driverName
- 驅(qū)動(dòng)名稱
username
- 數(shù)據(jù)庫(kù)連接用戶名
password
- 數(shù)據(jù)庫(kù)連接密碼
package com.haoming;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.po.TableFill;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
import java.util.ArrayList;
public class ChengCode {
public static void main(String[] args) {
//構(gòu)建代碼生成器對(duì)象
AutoGenerator mpg = new AutoGenerator();
//1、全局配置
GlobalConfig gc = new GlobalConfig();
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");//生成文件的輸出目錄
gc.setAuthor("鼠皓明");//作者
gc.setOpen(false);//是否打開輸出目錄
gc.setFileOverride(false);//是否覆蓋已有的文件
gc.setServiceName("%sService");//去除Service的I前綴
gc.setIdType(IdType.ID_WORKER);//主鍵生成策略
//ONLY_DATE 只使用 java.util.date 代替,SQL_PACK 使用 java.sql 包下的,TIME_PACK 使用 java.time 包下的 java8 新的時(shí)間類型
gc.setDateType(DateType.TIME_PACK);//數(shù)據(jù)庫(kù)時(shí)間類型 到 實(shí)體類時(shí)間類型 對(duì)應(yīng)策略
gc.setSwagger2(true);//開啟swagger2模式
mpg.setGlobalConfig(gc);
//2、數(shù)據(jù)源配置
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/mybatis_plus?useSSl=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=UTC");
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
dsc.setDbType(DbType.MYSQL);//數(shù)據(jù)庫(kù)類型
mpg.setDataSource(dsc);
//3、包的配置
PackageConfig pc = new PackageConfig();
pc.setModuleName("blog");//父包模塊名
pc.setParent("com.cheng");//父包名,如果為空,將下面子包名必須寫全部, 否則就只需寫子包名
pc.setEntity("pojo");
pc.setMapper("mapper");
pc.setService("service");
pc.setController("controller");
mpg.setPackageInfo(pc);
//4、策略配置
StrategyConfig sy = new StrategyConfig();
sy.setInclude("user");//設(shè)置要映射的表,可以設(shè)置多張
sy.setNaming(NamingStrategy.underline_to_camel);//從數(shù)據(jù)庫(kù)表到文件的命名策略,下劃線轉(zhuǎn)駝峰命名
sy.setColumnNaming(NamingStrategy.underline_to_camel);//列的命名策略
sy.setEntityLombokModel(true);//開啟lombok支持
sy.setLogicDeleteFieldName("deleted");//設(shè)置邏輯刪除字段
sy.setVersionFieldName("version");//設(shè)置樂(lè)觀鎖
sy.setRestControllerStyle(true);//開啟controller的restful命名
sy.setControllerMappingHyphenStyle(true);//開啟controller中請(qǐng)求映射的連字符樣式,如:localhost:8080/hello_id_1
//設(shè)置自動(dòng)填充
TableFill create_time = new TableFill("create_time", FieldFill.INSERT);
TableFill update_time = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(create_time);
tableFills.add(update_time);
mpg.setStrategy(sy);
//執(zhí)行代碼生成器
mpg.execute();
}
}
執(zhí)行代碼生成器,查看項(xiàng)目結(jié)構(gòu)的變化

代碼生成器執(zhí)行成功,自動(dòng)生成 Entity、Mapper、Mapper XML、Service、Controller 等各個(gè)模塊的代碼。
到此這篇關(guān)于MyBatisPlus代碼生成器的使用示例的文章就介紹到這了,更多相關(guān)MyBatisPlus代碼生成器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- SpringBoot+MybatisPlus+代碼生成器整合示例
- MybatisPlus使用代碼生成器遇到的小問(wèn)題(推薦)
- MyBatisPlus3.x中使用代碼生成器(全注釋)
- SpringBoot快速整合Mybatis、MybatisPlus(代碼生成器)實(shí)現(xiàn)數(shù)據(jù)庫(kù)訪問(wèn)功能
- Java實(shí)戰(zhàn)之實(shí)現(xiàn)一個(gè)好用的MybatisPlus代碼生成器
- MybatisPlus代碼生成器的使用方法詳解
- MybatisPlus代碼生成器含XML文件詳解
- MyBatisPlus代碼生成器的原理及實(shí)現(xiàn)詳解
- MybatisPlus代碼生成器使用示例
相關(guān)文章
SpringBoot實(shí)現(xiàn)RabbitMQ三種使用方式
本文主要介紹了SpringBoot實(shí)現(xiàn)RabbitMQ三種使用方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
Kotlin-Coroutines中的async與await異步協(xié)程管理
這篇文章主要為大家介紹了Kotlin-Coroutines中的async與await異步協(xié)程管理,提升程序性能解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10
通過(guò)Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼
這篇文章主要介紹了通過(guò)Spring Boot配置動(dòng)態(tài)數(shù)據(jù)源訪問(wèn)多個(gè)數(shù)據(jù)庫(kù)的實(shí)現(xiàn)代碼,需要的朋友可以參考下2018-03-03
logback配置中變量和include的應(yīng)用方式
這篇文章主要介紹了logback配置中變量和include的應(yīng)用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-08-08
SpringBoot集成quartz實(shí)現(xiàn)定時(shí)任務(wù)
這篇文章主要介紹了如何使用SpringBoot整合Quartz,并將定時(shí)任務(wù)寫入庫(kù)中(持久化存儲(chǔ)),還可以任意對(duì)定時(shí)任務(wù)進(jìn)行如刪除、暫停、恢復(fù)等操作,需要的可以了解下2023-09-09
java switch語(yǔ)句使用注意的四大細(xì)節(jié)
很多朋友在使用java switch語(yǔ)句時(shí),可能沒(méi)有注意到一些細(xì)節(jié),本文將詳細(xì)介紹使用java switch語(yǔ)句四大要點(diǎn),需要的朋友可以參考下2012-12-12
Java的Struts2框架配合Ext JS處理JSON數(shù)據(jù)的使用示例
這篇文章主要介紹了Java的Struts2框架配合Ext JS處理JSON數(shù)據(jù)的使用示例,包括將Ext JS中的JSON數(shù)據(jù)解析為列表的方法,需要的朋友可以參考下2016-03-03

