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));//分頁插件 interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());//樂觀鎖插件 return interceptor; } }
自動(dòng)填充
- 首先在實(shí)體類上需要添加注解
@TableField(fill = FieldFill.INSERT)
- 若需要給id添加值,則加上注解
@TableId(type = IdType.ASSIGN_ID)
此處例子ID是在數(shù)據(jù)庫中自增因此沒有使用該注解
@Data @AllArgsConstructor @NoArgsConstructor public class User { private Long id; private String name; private Integer age; private String email; //數(shù)據(jù)庫中是下劃線,實(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;//版本號 @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); } }
代碼生成器配置
一般只寫在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 方法控制臺輸入模塊表名回車自動(dòng)生成對應(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() // 開啟 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è)置過濾表前綴 .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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
用java生成html文件實(shí)現(xiàn)原理及代碼
用printStream來向html文件里輸出數(shù)據(jù),先創(chuàng)建一個(gè)StringBuilder對象,通過append方法來為其添加html語句,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下,希望對大家有所幫助2013-08-08Springboot+TCP監(jiān)聽服務(wù)器搭建過程圖解
這篇文章主要介紹了Springboot+TCP監(jiān)聽服務(wù)器搭建過程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10SpringBoot使用Kafka來優(yōu)化接口請求的并發(fā)方式
這篇文章主要介紹了SpringBoot使用Kafka來優(yōu)化接口請求的并發(fā)方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-07-07Spring?Cloud?中使用?Sentinel?實(shí)現(xiàn)服務(wù)限流的兩種方式
這篇文章主要介紹了Spring?Cloud?中使用?Sentinel?實(shí)現(xiàn)服務(wù)限流的方式,通過示例代碼主要介紹了Sentinel的兩種實(shí)現(xiàn)限流的方式,需要的朋友可以參考下2024-03-03Java之如何讀取Excel獲取真實(shí)行數(shù)
這篇文章主要介紹了Java之如何讀取Excel獲取真實(shí)行數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助。2023-06-06Spring中的動(dòng)態(tài)數(shù)據(jù)源解讀
這篇文章主要介紹了關(guān)于Spring中的動(dòng)態(tài)數(shù)據(jù)源解讀,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06