MybatisPlus常用依賴、配置、插件方式
MybatisPlus常用依賴、配置、插件
依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
<!-- velocity 模板引擎, Mybatis Plus 代碼生成器需要 -->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity.version}</version>
</dependency>
插件配置
- 一般建立config包,新建一個(gè)配置類
- 一般添加插件直接使用
@Configuration
@MapperScan(value = "com.sucker.eduservice.mapper")
public class EduConfig {
//mybatis-plus插件配置
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.H2));//分頁(yè)插件
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//樂(lè)觀鎖插件
return interceptor;
}
}
自動(dòng)填充
- 首先在實(shí)體類上需要添加注解
@TableField(fill = FieldFill.INSERT)
- 若需要給id添加值,則加上注解
@TableId(type = IdType.ASSIGN_ID)
此處例子ID是在數(shù)據(jù)庫(kù)中自增因此沒(méi)有使用該注解
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private Long id;
private String name;
private Integer age;
private String email;
//數(shù)據(jù)庫(kù)中是下劃線,實(shí)體類要駝峰
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)//自動(dòng)填充注解
private Date updateTime;
@Version
@TableField(fill = FieldFill.INSERT)
private Integer version;//版本號(hào)
@TableLogic
private Integer deleted;
}
在新建handler包,新建MyMetaObjectHandler類,需要實(shí)現(xiàn)MetaObjectHandler
在其中進(jìn)行自動(dòng)填充配置
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime", new Date(), metaObject);
this.setFieldValByName("updateTime", new Date(), metaObject);
this.setFieldValByName("version", 1, metaObject);
}
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime", new Date(), metaObject);
}
}
代碼生成器配置
一般只寫(xiě)在test目錄中,因?yàn)橹皇褂靡淮?/p>
package com.sucker.demo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.OutputFile;
import com.baomidou.mybatisplus.generator.config.rules.DateType;
import com.baomidou.mybatisplus.generator.engine.VelocityTemplateEngine;
import org.junit.Test;
import java.util.Collections;
public class CodeGenerator {
// 演示例子,執(zhí)行 main 方法控制臺(tái)輸入模塊表名回車自動(dòng)生成對(duì)應(yīng)項(xiàng)目目錄中
@Test
public void test(){
FastAutoGenerator.create("jdbc:mysql://localhost:3306/guli_edu?useUnicode=true&characterEncoding=utf8",
"root", "123456")
.globalConfig(builder -> {
builder.author("sucker") // 設(shè)置作者
.enableSwagger() // 開(kāi)啟 swagger 模式
.dateType(DateType.ONLY_DATE)
.fileOverride()
.outputDir("D:\\JavaCode\\gulimall\\guli_parent1\\service\\service_edu"+"\\src\\main\\java"); // 指定輸出目錄
})
.packageConfig(builder -> {
builder.parent("com.sucker") // 設(shè)置父包名
.moduleName("eduservice") // 設(shè)置父包模塊名
.controller("controller")
.entity("entity")
.service("service")
.mapper("mapper")
.xml("mapper")
.pathInfo(Collections.singletonMap(OutputFile.mapperXml,
"D:\\JavaCode\\gulimall\\guli_parent1\\service\\service_edu\\src\\main\\resources\\mapper")); // 設(shè)置mapperXml生成路徑
})
.strategyConfig(builder -> {
builder.addInclude("edu_teacher") // 設(shè)置需要生成的表名
.addTablePrefix("t_", "c_") // 設(shè)置過(guò)濾表前綴
.serviceBuilder()
.formatServiceFileName("%sService")
.entityBuilder()
.enableLombok()
.logicDeleteColumnName("is_deleted")
.enableTableFieldAnnotation()
.controllerBuilder()
.formatFileName("%sController")
.enableRestStyle()
.mapperBuilder()
.enableBaseResultMap()
.superClass(BaseMapper.class)
.formatMapperFileName("%sMapper")
.enableMapperAnnotation()
.formatXmlFileName("%sMapper");
})
.templateEngine(new VelocityTemplateEngine()) // 使用Freemarker引擎模板,默認(rèn)的是Velocity引擎模板
.execute();
}
}
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- MybatisPlusInterceptor依賴變紅如何解決,無(wú)法識(shí)別問(wèn)題
- mybatisPlus配置邏輯字段不生效問(wèn)題解決
- 關(guān)于mybatisPlus?yml配置方式
- 關(guān)于MybatisPlus配置雙數(shù)據(jù)庫(kù)驅(qū)動(dòng)連接數(shù)據(jù)庫(kù)問(wèn)題
- 解決mybatisPlus 中的field-strategy配置失效問(wèn)題
- idea的easyCode的 MybatisPlus模板的配置詳解
- SpringBoot整合MyBatisPlus配置動(dòng)態(tài)數(shù)據(jù)源的方法
相關(guān)文章
用java生成html文件實(shí)現(xiàn)原理及代碼
用printStream來(lái)向html文件里輸出數(shù)據(jù),先創(chuàng)建一個(gè)StringBuilder對(duì)象,通過(guò)append方法來(lái)為其添加html語(yǔ)句,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08
Springboot+TCP監(jiān)聽(tīng)服務(wù)器搭建過(guò)程圖解
這篇文章主要介紹了Springboot+TCP監(jiān)聽(tīng)服務(wù)器搭建過(guò)程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
SpringBoot使用Kafka來(lái)優(yōu)化接口請(qǐng)求的并發(fā)方式
這篇文章主要介紹了SpringBoot使用Kafka來(lái)優(yōu)化接口請(qǐng)求的并發(fā)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07
Spring?Cloud?中使用?Sentinel?實(shí)現(xiàn)服務(wù)限流的兩種方式
這篇文章主要介紹了Spring?Cloud?中使用?Sentinel?實(shí)現(xiàn)服務(wù)限流的方式,通過(guò)示例代碼主要介紹了Sentinel的兩種實(shí)現(xiàn)限流的方式,需要的朋友可以參考下2024-03-03
Java之如何讀取Excel獲取真實(shí)行數(shù)
這篇文章主要介紹了Java之如何讀取Excel獲取真實(shí)行數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。2023-06-06
Spring中的動(dòng)態(tài)數(shù)據(jù)源解讀
這篇文章主要介紹了關(guān)于Spring中的動(dòng)態(tài)數(shù)據(jù)源解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06

