mybatis-plus學(xué)習(xí)及使用
什么是Mybatis-Plus
MyBatis-Plus 是一個(gè) MyBatis 的增強(qiáng)工具,在 MyBatis 的基礎(chǔ)上只做增強(qiáng)不做改變,為簡化開發(fā)、提高效率而生。
Mybatis-Plus的特性
- 無侵入:只做增強(qiáng)不做改變,引入它不會對現(xiàn)有工程產(chǎn)生影響,如絲般順滑
- 損耗小:啟動即會自動注入基本 CURD,性能基本無損耗,直接面向?qū)ο蟛僮?/li>
- 強(qiáng)大的 CRUD 操作:內(nèi)置通用 Mapper、通用 Service,僅僅通過少量配置即可實(shí)現(xiàn)單表大部分 CRUD 操作,更有強(qiáng)大的條件構(gòu)造器,滿足各類使用需求
- 支持 Lambda 形式調(diào)用:通過 Lambda 表達(dá)式,方便的編寫各類查詢條件,無需再擔(dān)心字段寫錯(cuò)
- 支持主鍵自動生成:支持多達(dá) 4 種主鍵策略(內(nèi)含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解決主鍵問題
- 支持 ActiveRecord 模式:支持 ActiveRecord 形式調(diào)用,實(shí)體類只需繼承 Model 類即可進(jìn)行強(qiáng)大的 CRUD 操作
- 支持自定義全局通用操作:支持全局通用方法注入( Write once, use anywhere )
- 內(nèi)置代碼生成器:采用代碼或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 層代碼,支持模板引擎,更有超多自定義配置等您來使用
- 內(nèi)置分頁插件:基于 MyBatis 物理分頁,開發(fā)者無需關(guān)心具體操作,配置好插件之后,寫分頁等同于普通 List 查詢
- 分頁插件支持多種數(shù)據(jù)庫:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多種數(shù)據(jù)庫
- 內(nèi)置性能分析插件:可輸出 Sql 語句以及其執(zhí)行時(shí)間,建議開發(fā)測試時(shí)啟用該功能,能快速揪出慢查詢
- 內(nèi)置全局?jǐn)r截插件:提供全表 delete 、 update 操作智能分析阻斷,也可自定義攔截規(guī)則,預(yù)防誤操作
官方網(wǎng)站
快速起步
版本說明
本文檔使用的是MyBatis-Plus v3.4.2
準(zhǔn)備數(shù)據(jù)庫
1、創(chuàng)建數(shù)據(jù)庫 mybatis-plus
2、導(dǎo)入如下腳本
DROP TABLE IF EXISTS USER;
CREATE TABLE USER
(
id BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵ID',
NAME VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
age INT(11) NULL DEFAULT NULL COMMENT '年齡',
email VARCHAR(50) NULL DEFAULT NULL COMMENT '郵箱',
PRIMARY KEY (id)
) DEFAULT CHARSET=UTF8;
DELETE FROM USER;
INSERT INTO USER (id, NAME, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');
創(chuàng)建SpringBoot項(xiàng)目





導(dǎo)入依賴
修改 pom.xml 文件
<!-- MySql數(shù)據(jù)庫相關(guān)依賴 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- MyBatis-Plus相關(guān)依賴 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
配置數(shù)據(jù)源
1、修改配置文件類型
將 src/main/resources/application.properties 更改為 src/main/resources/application.yml
2、添加如下配置
server:
port: 8080
spring:
datasource:
username: root
password: ok
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
配置啟動類
修改 com.yacon.mybatisplus.MybatisPlusApplication 類
package com.yacon.mybatisplus;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.yacon.mybatisplus.mapper")
public class MybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class, args);
}
}
創(chuàng)建POJO類
創(chuàng)建 com.yacon.mybatisplus.pojo.User 類
package com.yacon.mybatisplus.pojo;
import lombok.Data;
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
創(chuàng)建Mapper類
創(chuàng)建 com.yacon.mybatisplus.mapper.UserMapper 接口
package com.yacon.mybatisplus.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.yacon.mybatisplus.pojo.User;
public interface UserMapper extends BaseMapper<User> { }
編寫測試方法
1、修改 src/test/java/com/yacon/mybatisplus/MybatisPlusApplicationTests.java文件
package com.yacon.mybatisplus;
import com.yacon.mybatisplus.mapper.UserMapper;
import com.yacon.mybatisplus.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import javax.annotation.Resource;
import java.util.List;
@SpringBootTest
class MybatisPlusApplicationTests {
@Resource
private UserMapper userMapper;
/**
* 查詢所有用戶列表
*/
@Test
public void testSelect(){
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
}
2、運(yùn)行測試

日志輸出
1、修改 src/main/resources/application.yml 配置文件,添加日志配置
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
2、運(yùn)行測試

基礎(chǔ)CRUD
SELECT
根據(jù)ID查詢
1、添加測試方法
/**
* 查詢用戶信息
*/
@Test
public void testGetUserById(){
User user = userMapper.selectById(5);
if(null == user) {
System.out.println("查詢失敗");
return;
}
System.out.println(user.getId());
System.out.println(user.getName());
System.out.println(user.getAge());
System.out.println(user.getEmail());
}
2、運(yùn)行測試

查詢總條目數(shù)
1、編寫測試方法
/**
* 查詢總條目數(shù)
*/
@Test
public void testGetUserCount(){
Integer count = userMapper.selectCount(null);
System.out.println(count);
}
2、運(yùn)行測試

條件查詢
1、編寫測試方法
/**
* 查詢年齡大于20歲的用戶
*/
@Test
public void testWhere(){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.gt("age",20);
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
2、運(yùn)行測試

模糊查詢
1、編寫測試方法
/**
* 查詢姓名包含 a 的用戶
*/
@Test
public void testLike(){
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.like("name",'a');
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
2、運(yùn)行測試

排序查詢
1、添加測試方法
/**
* 查詢用戶列表,并按年齡逆序
*/
@Test
public void testOrder() {
QueryWrapper queryWrapper = new QueryWrapper();
queryWrapper.orderByDesc("age");
List<User> users = userMapper.selectList(queryWrapper);
users.forEach(System.out::println);
}
2、運(yùn)行測試

INSERT
配置主鍵生成策略
1、確保數(shù)據(jù)表的主鍵列為自增列

2、修改 com.yacon.mybatisplus.pojo.User 類
@Data
public class User {
@TableId(type= IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
}
編寫測試方法
1、添加測試方法
/**
* 插入用戶
*/
@Test
public void testInsert(){
User user = new User();
user.setName("張三");
user.setAge(20);
user.setEmail("zhangsan@mail.com");
int result = userMapper.insert(user);
System.out.println(result > 0 ? "插入成功" : "插入失敗");
System.out.println("ID="+user.getId());
}
2、運(yùn)行測試


UPDATE
1、添加測試方法
/**
* 更新用戶
*/
@Test
public void testUpdate(){
User user = new User();
user.setId(6L);
user.setName("zhangsan");
int result = userMapper.updateById(user);
System.out.println(result > 0 ? "修改成功" : "修改失敗");
}
2、運(yùn)行測試


DELETE
1、添加測試方法
/**
* 刪除用戶
*/
@Test
public void testDelete(){
int result = userMapper.deleteById(6);
System.out.println(result > 0 ? "刪除成功" : "刪除失敗");
}
2、運(yùn)行測試

高級擴(kuò)展
邏輯刪除
邏輯刪除 是指,在刪除表中的某條數(shù)據(jù)時(shí)并不是真正的刪除,而是更改某個(gè)表字段的值來表示該條數(shù)據(jù)已被刪除
修改數(shù)據(jù)表
給 User 添加字段 deleted,并設(shè)置默認(rèn)值為 0
ALTER TABLE `mybatis_plus`.`user` ADD COLUMN `deleted` INT(1) DEFAULT 0 NOT NULL AFTER `email`;
修改實(shí)體類
修改 com.yacon.mybatisplus.pojo.User 類
@Data
public class User {
@TableId(type= IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableLogic
private Integer deleted;
}
添加配置
修改 src/main/resources/application.yml 文件
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: deleted # 全局邏輯刪除的實(shí)體字段名
logic-delete-value: 1 # 邏輯已刪除的值
logic-not-delete-value: 0 # 邏輯未刪除的值
運(yùn)行測試
1、運(yùn)行 刪除用戶 測試方法


2、運(yùn)行 查詢所有用戶列表 測試方法

自動填充字段
修改數(shù)據(jù)表
給 user 表添加兩個(gè)字段 gmt-create 和 gmt-modified
ALTER TABLE `mybatis_plus`.`user`
ADD COLUMN `gmt_create` DATETIME NULL COMMENT '創(chuàng)建時(shí)間' AFTER `deleted`,
ADD COLUMN `gmt_modified` DATETIME NULL COMMENT '更新時(shí)間' AFTER `gmt_create`;

修改實(shí)體類
修改 com.yacon.mybatisplus.pojo.User 類
@Data
public class User {
@TableId(type= IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableLogic
private Integer deleted;
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
}
編寫填充處理器
創(chuàng)建 com.yacon.mybatisplus.handle.MyMetaObjectHandler 類
package com.yacon.mybatisplus.handler;
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.util.Date;
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("gmtCreate",new Date(), metaObject);
this.setFieldValByName("gmtModified",new Date(), metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("gmtModified",new Date(), metaObject);
}
}
運(yùn)行測試
1、運(yùn)行 插入用戶 測試方法


2、運(yùn)行 更新用戶 測試方法


常用插件
樂觀鎖
在高并發(fā)的情況下,可能存在多個(gè)用戶同時(shí)修改一條數(shù)據(jù)的情況,為了讓某一用戶在修改數(shù)據(jù)時(shí)不被被人更新,這時(shí)就需要用樂觀鎖將數(shù)據(jù)進(jìn)行鎖定
樂觀鎖實(shí)現(xiàn)方式
- 取出記錄時(shí),獲取當(dāng)前version
- 更新時(shí),帶上這個(gè)version
- 執(zhí)行更新時(shí), set version = newVersion where version = oldVersion
- 如果version不對,就更新失敗
修改數(shù)據(jù)表
給 user 表添加 version 字段 b
ALTER TABLE `mybatis_plus`.`user`
ADD COLUMN `version` INT DEFAULT 1 NULL COMMENT '樂觀鎖' AFTER `email`;

修改實(shí)體類
修改 com.yacon.mybatisplus.pojo.User 類
@Data
public class User {
@TableId(type= IdType.AUTO)
private Long id;
private String name;
private Integer age;
private String email;
@TableLogic
private Integer deleted;
@TableField(fill = FieldFill.INSERT)
private Date gmtCreate;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date gmtModified;
@Version
private Integer version;
}
注冊插件
1、創(chuàng)建 com.yacon.mybatisplus.config.MyBatisPlusConfig 類
package com.yacon.mybatisplus.config;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.transaction.annotation.EnableTransactionManagement;
@Configuration
@EnableTransactionManagement
@MapperScan("com.yacon.mybatisplus.mapper")
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 注冊樂觀鎖插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
}
2、修改 om.yacon.mybatisplus.MybatisPlusApplication 啟動類
@SpringBootApplication
@MapperScan("com.yacon.mybatisplus.mapper")
public class MybatisPlusApplication {
public static void main(String[] args) {
SpringApplication.run(MybatisPlusApplication.class, args);
}
}
運(yùn)行測試
1、添加測試方法
/**
* 樂觀鎖測試
*/
@Test
public void testLocker() {
// 模擬線程1
User user1 = userMapper.selectById(7L);
user1.setName("張三");
// 模擬線程2插隊(duì)
User user2 = userMapper.selectById(7L);
user2.setName("李四");
userMapper.updateById(user2);
userMapper.updateById(user1);
}
2、運(yùn)行測試


分頁查詢
注冊分頁插件
修改 com.yacon.mybatisplus.config.MyBatisPlusConfig 類
注意注冊插件的順序,要先注冊 分頁插件,再注冊 樂觀鎖插件
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 注冊分頁插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 注冊樂觀鎖插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
添加測試方法
修改 com.yacon.mybatisplus.MybatisPlusApplicationTests 測試類
/**
* 分頁查詢
*/
@Test
public void testPage(){
long current = 1; // 當(dāng)前頁碼
long size = 2; // 每頁顯示條目數(shù)
Page<User> page = new Page<>(current,size);
userMapper.selectPage(page, null);
List<User> users = page.getRecords(); // 獲取數(shù)據(jù)列表
users.forEach(System.out::println);
}
運(yùn)行測試

性能分析
SQL性能校驗(yàn)
注冊插件
修改 com.yacon.mybatisplus.config.MyBatisPlusConfig 類
性能分析插件 要放在 分頁插件 和 樂觀鎖插件 之后
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 注冊分頁插件
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
// 注冊樂觀鎖插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
// 注冊性能分析插件
interceptor.addInnerInterceptor(new IllegalSQLInnerInterceptor());
return interceptor;
}
運(yùn)行測試
1、運(yùn)行 查詢所有用戶列表 測試方法
由于我們開啟了 邏輯刪除,所以在查詢時(shí)需要使用 deleted 為查詢條件進(jìn)行查詢,但我們沒有給 deleted 字段添加索引,所以這里報(bào)了一個(gè) 未使用索引的錯(cuò)誤

2、修改數(shù)據(jù)庫,給 deleted 字段添加索引
注意:添加組合索引時(shí),deleted 一定要放在第一個(gè),否則,使用單個(gè)deleted 作為條件查詢時(shí)無法觸發(fā)索引
ALTER TABLE `mybatis_plus`.`user`
ADD UNIQUE INDEX `id_deleted_unique` (`deleted`, `id`);

3、重新運(yùn)行 查詢所有用戶列表 測試方法

SQL性能分析
該功能有性能損耗,不建議生產(chǎn)環(huán)境使用
添加依賴
修改 pom.xml
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>3.9.1</version>
</dependency>
修改數(shù)據(jù)源
修改 src/main/resources/application.yml
spring:
datasource:
username: root
password: ok
url: jdbc:p6spy:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
driver-class-name: com.p6spy.engine.spy.P6SpyDriver
url: jdbc:mysql://localhost:3306/mybatis_plus?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8
driver-class-name: com.mysql.cj.jdbc.Driver
配置p6spy
創(chuàng)建 src/main/resources/spy.properties
modulelist=com.baomidou.mybatisplus.extension.p6spy.MybatisPlusLogFactory,com.p6spy.engine.outage.P6OutageFactory
# 自定義日志打印
logMessageFormat=com.baomidou.mybatisplus.extension.p6spy.P6SpyLogger
#日志輸出到控制臺
appender=com.baomidou.mybatisplus.extension.p6spy.StdoutLogger
# 使用日志系統(tǒng)記錄 sql
#appender=com.p6spy.engine.spy.appender.Slf4JLogger
# 設(shè)置 p6spy driver 代理
deregisterdrivers=true
# 取消JDBC URL前綴
useprefix=true
# 配置記錄 Log 例外,可去掉的結(jié)果集有error,info,batch,debug,statement,commit,rollback,result,resultset.
excludecategories=info,debug,result,commit,resultset
# 日期格式
dateformat=yyyy-MM-dd HH:mm:ss
# 是否開啟慢SQL記錄
outagedetection=true
# 慢SQL記錄標(biāo)準(zhǔn) 2 秒
outagedetectioninterval=2
運(yùn)行測試
執(zhí)行 查詢用戶信息 測試方法

代碼生成器
創(chuàng)建SpringBoot項(xiàng)目
新建一個(gè)SpringBoot項(xiàng)目
導(dǎo)入依賴
修改 pom.xml 文件
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.0.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
編寫代碼生成器
創(chuàng)建 MyBatisPlusAutoCode 類
package com.yacon.mybatisplus;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
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 MyBatisPlusAutoCode {
public static void main(String[] args) {
AutoGenerator mpg = new AutoGenerator();
/* 全局配置 */
GlobalConfig gc = new GlobalConfig();
//生成文件的輸出目錄
String projectPath = System.getProperty("user.dir");
gc.setOutputDir(projectPath + "/src/main/java");
// 是否打開輸出目錄
gc.setOpen(false);
// 是否覆蓋已有文件
gc.setFileOverride(true);
// 開發(fā)人員
gc.setAuthor("Yacon");
// 是否生成swagger2注解
gc.setSwagger2(true);
// 時(shí)間類型對應(yīng)策略
gc.setDateType(DateType.TIME_PACK);
// mapper 命名方式
gc.setMapperName("%sDao");
// Mapper xml 命名方式
gc.setXmlName("%sDao");
// service 命名方式
gc.setServiceName("%sService");
// service impl 命名方式
gc.setServiceImplName("%sServiceImpl");
// controller 命名方式
gc.setControllerName("%sController");
// 指定生成的主鍵的ID類型
gc.setIdType(IdType.AUTO);
// 設(shè)置全局配置
mpg.setGlobalConfig(gc);
/* 數(shù)據(jù)源配置 */
DataSourceConfig dsc = new DataSourceConfig();
// 數(shù)據(jù)庫類型
dsc.setDbType(DbType.MYSQL);
// 驅(qū)動連接的URL
dsc.setUrl("jdbc:mysql://localhost:3306/cvs_db?useUnicode=true&useSSL=false&characterEncoding=utf8&serverTimezone=GMT%2B8");
// 驅(qū)動名稱
dsc.setDriverName("com.mysql.cj.jdbc.Driver");
// 數(shù)據(jù)庫賬號
dsc.setUsername("root");
// 數(shù)據(jù)庫密碼
dsc.setPassword("ok");
// 設(shè)置數(shù)據(jù)庫配置
mpg.setDataSource(dsc);
/* 包配置 */
PackageConfig pc = new PackageConfig();
// 父包模塊名
pc.setModuleName("api");
// 父包名
pc.setParent("com.yacon.mybatisplus");
// Entity包名
pc.setEntity("pojo");
// Service包名
pc.setService("service");
// Service Impl包名
pc.setServiceImpl("service");
// Mapper包名
pc.setMapper("dao");
// Mapper XML包名
pc.setXml("dao");
// Controller包名
pc.setController("controller");
// 設(shè)置包配置
mpg.setPackageInfo(pc);
/* 策略配置 */
StrategyConfig strategy = new StrategyConfig();
// 需要包含的表名
strategy.setInclude("t_address","t_storage_record","t_supplier","t_sys_role","t_sys_user");
// 表前綴
strategy.setTablePrefix("t_");
// 數(shù)據(jù)庫表映射到實(shí)體的命名策略
strategy.setNaming(NamingStrategy.underline_to_camel);
// 數(shù)據(jù)庫表字段映射到實(shí)體的命名策略
strategy.setColumnNaming(NamingStrategy.underline_to_camel);
// 是否為lombok模型
strategy.setEntityLombokModel(true);
// Boolean類型字段是否移除is前綴
strategy.setEntityBooleanColumnRemoveIsPrefix(true);
// 生成 @RestController 控制器
strategy.setRestControllerStyle(true);
// 駝峰轉(zhuǎn)連字符
strategy.setControllerMappingHyphenStyle(true);
// 樂觀鎖屬性名稱
strategy.setVersionFieldName("version");
// 邏輯刪除屬性名稱
strategy.setLogicDeleteFieldName("deleted");
// 表填充字段
TableFill gmtCreate = new TableFill("gmt_create", FieldFill.INSERT);
TableFill gmtModified = new TableFill("gmt_modified", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(gmtCreate);
tableFills.add(gmtModified);
strategy.setTableFillList(tableFills);
// 設(shè)置策略配置
mpg.setStrategy(strategy);
// 執(zhí)行
mpg.execute();
}
}
運(yùn)行代碼生成器



浙公網(wǎng)安備 33010602011771號