MyBatis-plus第三章:自動生成entity、dao、service、controller四層程式碼
本文主要記錄MyBatis-Plus的一個強大功能,自動生成entity、dao、service、controller四層程式碼,以及生成並關聯好mapper.xml檔案供我們手寫一些複雜的SQL(單表下的CRUD操作不需要手寫SQL了,框架內封裝了各種方法我們呼叫即可)。
一、建立SpringBoot專案並引入相關依賴
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.12</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--velocity 模板引擎,MyBatis-Plus 程式碼生成器需要-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>2.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
二、編寫配置檔案 application.properties
# 服務埠
server.port=8888
# 設定當前為開發環境
spring.profiles.active=dev
# 配置資料庫連線
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.url=jdbc:mysql://localhost:3306/question_bank?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
# 配置日誌
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl
# 配置邏輯刪除,邏輯刪除了的表中用1表示,沒刪除的0表示
mybatis-plus.global-config.db-config.logic-delete-value=1
mybatis-plus.global-config.db-config.logic-not-delete-value=0
三、建立程式碼生成器,並進行相關配置(可根據需求自行選擇配置)
寫在測試類中的main方法中即可,啟動main方法便能自動建立
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;
/**
* Author:三井壽
* 程式碼自動生成器
* 自動生成entity、dao、service、controller 各層程式碼
*/
public class AutoCode {
public static void main(String[] args) {
//構建一個程式碼生成器物件
AutoGenerator mpg = new AutoGenerator();
//配置執行策略
//1、全域性配置
GlobalConfig gc = new GlobalConfig();
String proPath = System.getProperty("user.dir"); //當前專案路徑
gc.setOutputDir(proPath + "/src/main/java"); //設定程式碼生成路徑
gc.setAuthor("科比門徒");
gc.setOpen(false); //生成後是否開啟資料夾
gc.setFileOverride(false); //是否覆蓋
gc.setServiceName("%sService"); //去service的 I 字首
gc.setIdType(IdType.ID_WORKER); //逐漸生成策略
gc.setDateType(DateType.ONLY_DATE); //設定日期型別
gc.setSwagger2(true); //是否生成Swagger
mpg.setGlobalConfig(gc);
//2、設定資料來源
DataSourceConfig dsc = new DataSourceConfig();
dsc.setUrl("jdbc:mysql://localhost:3306/question_bank?useSSL=false&useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT");
dsc.setDriverName("com.mysql.jdbc.Driver");
dsc.setUsername("root");
dsc.setPassword("123456");
dsc.setDbType(DbType.MYSQL);
mpg.setDataSource(dsc);
//3、配置生成哪些包,這些包放在哪
PackageConfig pc=new PackageConfig();
pc.setModuleName("block"); //設定並生成該模組包
pc.setParent("com.lg"); //設定模組存放位置
pc.setEntity("entity"); //設定並生成存放實體類包
pc.setMapper("mapper");//設定並生成存放mapper介面的包
pc.setService("service"); //設定並生成service層所在的包
pc.setController("controller"); //設定並生成controller層所在的包
mpg.setPackageInfo(pc);
//4、策略配置
StrategyConfig strategy=new StrategyConfig();
strategy.setInclude("user"); //設定要對映的表名!!!!
strategy.setNaming(NamingStrategy.underline_to_camel); //表名中下劃線轉駝峰命名
strategy.setColumnNaming(NamingStrategy.underline_to_camel);//表中欄位如果有下劃線,轉駝峰命名
strategy.setEntityLombokModel(true);//自動生成Lombok
strategy.setRestControllerStyle(true);//開啟 RestFul 風格
strategy.setControllerMappingHyphenStyle(true);
//設定邏輯刪除,對錶中的那個欄位
strategy.setLogicDeleteFieldName("deleted");
//自動填充 (表中如果有建立時間、修改時間話,可以使用自動填充)
TableFill createTime = new TableFill("create_time", FieldFill.INSERT);
TableFill updateTime = new TableFill("update_time", FieldFill.INSERT_UPDATE);
ArrayList<TableFill> tableFills = new ArrayList<>();
tableFills.add(createTime);
tableFills.add(updateTime);
strategy.setTableFillList(tableFills);
//樂觀鎖配置
strategy.setVersionFieldName("version");
mpg.setStrategy(strategy);
mpg.execute();//執行程式碼生成操作
}
}
四 、編寫配置檔案配置樂觀鎖,分頁外掛、邏輯刪除、SQL效能分頁外掛(可以省略,但需要與上一步中的相關配置保持一致)
import com.baomidou.mybatisplus.core.injector.ISqlInjector;
import com.baomidou.mybatisplus.extension.injector.LogicSqlInjector;
import com.baomidou.mybatisplus.extension.plugins.OptimisticLockerInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.transaction.annotation.EnableTransactionManagement;
/**
* Author:三井壽
*/
@Configuration //配置類
@EnableTransactionManagement //自動管理事務註解
public class MybatisPlusConfig {
/**
* 配置樂觀鎖
* @return
*/
@Bean
public OptimisticLockerInterceptor optimisticLockerInterceptor() {
return new OptimisticLockerInterceptor();
}
/**
* 配置分頁外掛
* @return
*/
@Bean
public PaginationInterceptor paginationInterceptor(){
return new PaginationInterceptor();
}
/**
* 配置邏輯刪除
* @return
*/
@Bean
public ISqlInjector sqlInjector(){
return new LogicSqlInjector();
}
/**
* 配置效能分析外掛
* @return
*/
@Bean
@Profile({"dev","test"}) //設定 dev,test 環境開啟
public PerformanceInterceptor performanceInterceptor(){
PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor();
//設定SQL最大可執行時間,超出這個時間說明SQL效能有問題,報超時異常
performanceInterceptor.setMaxTime(1000); //ms
//是否格式化SQL
performanceInterceptor.setFormat(true);
return performanceInterceptor;
}
}
五、執行main方法前的目錄結構及程式碼
六、執行main方法之後的目錄結構及程式碼
相關文章
- java自動生成實體類(帶註釋)和controller層,service層 dao層 xml層JavaControllerXML
- 後端開發基礎概念 Entity,DAO,DO,DTO,VO, Service,Controller後端Controller
- 使用IDEA+groovy快速生成entity、dto、dao、service、serviceImplIdea
- dao層 和controllerController
- java程式碼生成器(controller,service,mapper)JavaControllerAPP
- SpringBoot整合mybatis-plus,pagehelper以及程式碼自動生成Spring BootMyBatis
- mybatis-plus程式碼生成MyBatis
- SpringBoot中幾種好用的程式碼生成器(基於Mybatis-plus生成entity、mapper、xml等)Spring BootMyBatisAPPXML
- mybatis-plus整合springboot自動生成檔案MyBatisSpring Boot
- MyBatis-Plus之程式碼生成器MyBatis
- chagpt自動生成PPT程式碼GPT
- Android JNI 程式碼自動生成Android
- 程式碼自動生成外掛:
- k8s自定義controller三部曲之二:自動生成程式碼K8SController
- beego 程式碼自動生成器Go
- 使用mybatis-generator自動生成model、dao、mapping檔案MyBatisAPP
- MyBatis-plus 自動生成 條件構造器 QueryWrapperMyBatisAPP
- 【mybatis-plus】主鍵id生成、欄位自動填充MyBatis
- Service 層異常拋到 Controller 層處理還是直接處理?Controller
- Spring Boot專案利用MyBatis Generator進行資料層程式碼自動生成Spring BootMyBatis
- Mybatis-plus程式碼生成器的實現MyBatis
- SpringBoot整合MyBatis-Plus框架(程式碼生成器)Spring BootMyBatis框架
- 【Azure Bot Service】部署NodeJS ChatBot程式碼到App Service中無法自動啟動NodeJSAPP
- 利用mybatis-generator自動生成程式碼MyBatis
- Controller層Controller
- Spring AOP 實現《自動自動填充Entity》Spring
- MybatisPlus入門(十二)Mybatis-Plus 程式碼生成器MyBatis
- 整個小東西,在IDEA中自動生成PO、DAO、MapperIdeaAPP
- 借Adobe XD之力,自動生成Flutter程式碼Flutter
- 自定義Mybatis自動生成程式碼規則MyBatis
- 最簡單的mybatis自動程式碼生成MyBatis
- mybatis-generator-程式碼自動生成器MyBatis
- 自動生成檔案層級樹類
- Spring Boot使用Mybatis-plus和它的程式碼生成器Spring BootMyBatis
- 實戰:一鍵生成前後端程式碼,Mybatis-Plus程式碼生成器讓我舒服了後端MyBatis
- 概念POJO、DTO、DAO、PO、BO、VO、ENTITY詳解POJO
- 基於 AST 的程式碼自動生成方案AST
- mybatis根據表逆向自動化生成程式碼MyBatis