SpringBoot項目從搭建到發佈一條龍

前言

目前正在練手springboot+vue,因為很多步驟會遇到困難,當時查完資料解決,過一段時間就會忘記,所以決定建個系列記錄下來。因為中間很多過程已經被其他大神寫過,且這次開發經歷僅供學習分享與討論,就直接借鑒過來瞭,會附上原作者傳送門。本次項目準備寫文檔臨時起意,之前的步驟未作記錄,比如部署linux虛擬機,利用mycat實現讀寫分離等,這個等項目需要用到的時候再加說明。好瞭現在讓我們開始吧!

第二章 使用IDEA搭建一個簡單的SpringBoot項目——初始化項目

前言

該篇文章質量很高,我利用作者教程一次搭建成功,直接復制過來

創建項目

在這裡插入圖片描述

2.選擇“Spring Initializr”,點擊next;(jdk1.8默認即可)

在這裡插入圖片描述

3.完善項目信息,組名可不做修改,項目名可做修改;最終建的項目名為:test,src->main->java下包名會是:com->example->test;點擊next;

在這裡插入圖片描述

4.Web下勾選Spring Web Start,(網上創建springboot項目多是勾選Web選項,而較高版本的Springboot沒有此選項,勾選Spring Web Start即可,2.1.8版本是Spring Web);Template Englines勾選Thymeleaf;SQL勾選:MySQL Driver,JDBC API 和 MyBatis Framework三項;點擊next;

在這裡插入圖片描述

5.選擇項目路徑,點擊finish;打開新的窗口;

在這裡插入圖片描述
在這裡插入圖片描述

6.剛創建好的項目目錄結構

![在這裡插入圖片描述](https://img-blog.csdnimg.cn/20210204142502112.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3llamlhbGlhbmd6aQ==,size_16,color_FFFFFF,t_70)

7.點擊右側的Maven,點擊設置(扳手圖標)進行項目Maven倉庫的配置;

在這裡插入圖片描述

8.(1)選擇本地Maven路徑;(2)勾選配置文件後邊的選項,然後修改為本地Maven的配置文件,它會根據配置文件直接找到本地倉庫位置;

在這裡插入圖片描述

9.配置完後,如果沒有自動導包,可以點擊左上角重新導包按鈕,或者呢個下載按鈕,選擇下載所有源文件和文檔

在這裡插入圖片描述

10.在templates文件下新建index.html頁面,作為啟動的初始頁面;

在這裡插入圖片描述

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>hello</title>
</head>
<body>
 你好!初學者,我是SpringBoot的簡單啟動頁面!
</body>
</html>

11.在com.example.test下新建controller文件夾,在controller文件夾下建一個簡單的helloController類;(Controller類要添加@Controller註解,項目啟動時,SpringBoot會自動掃描加載Controller)

在這裡插入圖片描述

package com.example.test.controller;
 
 
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
 
@Controller
public class HelloController {
 
 @RequestMapping("/index")
 public String sayHello(){
 return "index";
 }
}

12.在resources文件夾下application中先配置DataSource基本信息,application文件有兩種文件格式,一種是以.properties為後綴,一種是以.yml為後綴的,兩種配置方式略有差別,詳情可參考這個網址:https://www.jb51.net/article/154115.htm;在這我是用.yml後綴的文件格式。右鍵application文件選擇Refact,選擇Rename,將後綴改為yml;

在這裡插入圖片描述

spring:
 datasource:
 name: test #數據庫名
 url: jdbc:mysql://localhost:3306/test #url
 username: root #用戶名
 password: 123456 #密碼
 driver-class-name: com.mysql.jdbc.Driver #數據庫鏈接驅動

13.運行項目啟動類TestApplication.java

在這裡插入圖片描述

!可以發現上面有一個WARN警告,那是因為還沒有配置編寫MyBatis的相關文件,下面會進行詳解;

2019-08-02 09:14:27.473 WARN 9120 — [
main] o.m.s.mapper.ClassPathMapperScanner
: No MyBatis mapper was found in ‘[com.example.test]’ package. Please check your configuration.

14.在瀏覽器中輸入localhost:8080,回車顯示初始的index界面;到這項目的初步搭建已經完成,下面可以下一些簡單的業務邏輯,比如從數據庫獲取信息,登錄之類的簡單功能;

在這裡插入圖片描述

15.在進行下一步編寫時,我們先來鏈接一下數據庫;點擊右側的Database,點“加號”,新建數據庫鏈接;

在這裡插入圖片描述

16.填寫數據庫相關信息,點擊Test Connection;

在這裡插入圖片描述

17.如果鏈接失敗可能是驅動的問題,點擊左上角的小扳手,進入數據庫設置界面

在這裡插入圖片描述

18.連接成功後,顯示數據庫信息,user表的基本信息也顯示瞭,下面就照這個來瞭;

在這裡插入圖片描述

19.往下的我就沒照做瞭,下面是我自己搭建的項目

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

20.我的數據庫,連的mycat。啟動三臺虛擬機,運行linux1和linux2中的mysql,運行Linux3中的mycat,關閉防火墻

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

在這裡插入圖片描述

21.原文傳送門
點這裡

第三章 整合全局捕獲異常

前言

@ExceptionHandler 表示攔截異常
• @ControllerAdvice 是 controller 的一個輔助類,最常用的就是作為全局異常處理的切面類
• @ControllerAdvice 可以指定掃描范圍
• @ControllerAdvice 約定瞭幾種可行的返回值,如果是直接返回 model 類的話,需要使用 @ResponseBody 進行 json 轉換
o 返回 String,表示跳到某個 view
o 返回 modelAndView
o 返回 model + @ResponseBody

@ControllerAdvice

1. 控制層代碼

在這裡插入圖片描述

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ErrorController {
 // 全局捕獲異常 使用AOP技術,采用異常通知
 @RequestMapping("/getUser")
 public String getUser(int i){
 int j = 1/i;
 return "success"+j;
 }
}

2.異常攔截代碼

在這裡插入圖片描述

import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.HashMap;
import java.util.Map;

@ControllerAdvice(basePackages = "com.example.test.controller")
public class GlobalExceptionHandler {
 @ExceptionHandler(RuntimeException.class)
 @ResponseBody
 public Map<String,Object> errorResult(){
 Map<String,Object> errorResultMap = new HashMap<>();
 errorResultMap.put("errorCode","500");
 errorResultMap.put("errorMsg","系統錯誤!");
 return errorResultMap;
 }
}

3.運行結果

在這裡插入圖片描述

第四章 springboot+log4j.yml配置日志文件

前言

此處為轉載,原作者寫的比較詳細,就一個地方有問題,去掉默認日志,加載別的日志 , 切換log4j2日志讀取應該放在spring-boot-starter下而不是spring-boot-starter-web;會無法打包

一,Maven 依賴 pom.xml配置

1. 掉默認日志,以便切換到log4j2的日志依賴

 <dependency>
 <!-- 包含 mvc,aop 等jar資源 -->
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter</artifactId>
 <exclusions>
 <!--去掉默認日志,加載別的日志 , 切換log4j2日志讀取 -->
 <exclusion>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-logging</artifactId>
 </exclusion>
 </exclusions>
 </dependency>

2. 然後添加如下兩個日志依賴

<!-- 配置 log4j2 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-log4j2</artifactId>
		</dependency>
		
		<!-- 加上這個才能辨認到log4j2.yml文件 -->
		<dependency>
			<groupId>com.fasterxml.jackson.dataformat</groupId>
			<artifactId>jackson-dataformat-yaml</artifactId>
		</dependency>

二,在工程根目錄下添加 lo4g2.yml 配置文件

1, 文件存放位置

在這裡插入圖片描述

2, 配置文件內容

# 共有8個級別,按照從低到高為:ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF。
Configuration:
 status: warn
 monitorInterval: 30
 Properties: # 定義全局變量
 Property: # 缺省配置(用於開發環境)。其他環境需要在VM參數中指定,如下:
 #測試:-Dlog.level.console=warn -Dlog.level.xjj=trace
 #生產:-Dlog.level.console=warn -Dlog.level.xjj=info
 - name: log.level.console
 value: info
 - name: log.path
 value: log
 - name: project.name
 value: opendoc
 - name: log.pattern
 value: "%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-30.30C{1.} : %m%n"
 Appenders:
 Console: #輸出到控制臺
 name: CONSOLE
 target: SYSTEM_OUT
 PatternLayout:
 pattern: ${log.pattern}
# 啟動日志
 RollingFile:
 - name: ROLLING_FILE
 fileName: ${log.path}/${project.name}.log
 filePattern: "${log.path}/historyRunLog/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
 PatternLayout:
 pattern: ${log.pattern}
 Filters:
# 一定要先去除不接受的日志級別,然後獲取需要接受的日志級別
 ThresholdFilter:
 - level: error
 onMatch: DENY
 onMismatch: NEUTRAL
 - level: info
 onMatch: ACCEPT
 onMismatch: DENY
 Policies:
 TimeBasedTriggeringPolicy: # 按天分類
 modulate: true
 interval: 1
 DefaultRolloverStrategy: # 文件最多100個
 max: 100
# 平臺日志
 - name: PLATFORM_ROLLING_FILE
 ignoreExceptions: false
 fileName: ${log.path}/platform/${project.name}_platform.log
 filePattern: "${log.path}/platform/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
 PatternLayout:
 pattern: ${log.pattern}
 Policies:
 TimeBasedTriggeringPolicy: # 按天分類
 modulate: true
 interval: 1
 DefaultRolloverStrategy: # 文件最多100個
 max: 100
# 業務日志
 - name: BUSSINESS_ROLLING_FILE
 ignoreExceptions: false
 fileName: ${log.path}/bussiness/${project.name}_bussiness.log
 filePattern: "${log.path}/bussiness/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
 PatternLayout:
 pattern: ${log.pattern}
 Policies:
 TimeBasedTriggeringPolicy: # 按天分類
 modulate: true
 interval: 1
 DefaultRolloverStrategy: # 文件最多100個
 max: 100
# 錯誤日志
 - name: EXCEPTION_ROLLING_FILE
 ignoreExceptions: false
 fileName: ${log.path}/exception/${project.name}_exception.log
 filePattern: "${log.path}/exception/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
 ThresholdFilter:
 level: error
 onMatch: ACCEPT
 onMismatch: DENY
 PatternLayout:
 pattern: ${log.pattern}
 Policies:
 TimeBasedTriggeringPolicy: # 按天分類
 modulate: true
 interval: 1
 DefaultRolloverStrategy: # 文件最多100個
 max: 100
# DB 日志
 - name: DB_ROLLING_FILE
 ignoreExceptions: false
 fileName: ${log.path}/db/${project.name}_db.log
 filePattern: "${log.path}/db/$${date:yyyy-MM}/${project.name}-%d{yyyy-MM-dd}-%i.log.gz"
 PatternLayout:
 pattern: ${log.pattern}
 Policies:
 TimeBasedTriggeringPolicy: # 按天分類
 modulate: true
 interval: 1
 DefaultRolloverStrategy: # 文件最多100個
 max: 100
 Loggers:
 Root:
 level: info
 AppenderRef:
 - ref: CONSOLE
 - ref: ROLLING_FILE
 - ref: EXCEPTION_ROLLING_FILE
 Logger:
 - name: platform
 level: info
 additivity: false
 AppenderRef:
 - ref: CONSOLE
 - ref: PLATFORM_ROLLING_FILE
 - name: bussiness
 level: info
 additivity: false
 AppenderRef:
 - ref: BUSSINESS_ROLLING_FILE
 - name: exception
 level: debug
 additivity: true
 AppenderRef:
 - ref: EXCEPTION_ROLLING_FILE
 - name: db
 level: info
 additivity: false
 AppenderRef:
 - ref: DB_ROLLING_FILE
# 監聽具體包下面的日志
# Logger: # 為com.xjj包配置特殊的Log級別,方便調試
# - name: com.xjj
# additivity: false
# level: ${sys:log.level.xjj}
# AppenderRef:
# - ref: CONSOLE
# - ref: ROLLING_FILE

3, 在application.yml引入log4j2.yml

#在application.yml引入log4j2.yml
logging:
 config: classpath:log4j2.yml 

三, 不同日志枚舉類

1, 本地日志枚舉類

package com.tcs.irecr.util;
/**
 * 
 * 本地日志枚舉
 * 由於配置瞭4個文件存放不同日志,分別為平臺日志(${project.name}_platform.log)、 業務日志(${project.name}_bussiness.log)、錯誤日志(${project.name}_exception.log)、DB 日志(${project.name}_db.log),
 * 文件夾外面為運行日志,不同文件日志級別不一樣,因此程序員在開發時候需要註意引入不同日志,
 * 也就是說開發出現的日志,程序員可以進行分類,分別調用公共方法即可。
 * 公共類編輯如下;
 * 
 * @author 1632369
 *
 */
public enum LogEnum {
 
	BUSSINESS("bussiness"),PLATFORM("platform"),DB("db"),EXCEPTION("exception");
 
 
 private String category;
 
 
 LogEnum(String category) {
 this.category = category;
 }
 
 public String getCategory() {
 return category;
 }
 
 public void setCategory(String category) {
 this.category = category;
 }
 
}

四, 不同日志工具類util編輯

1, 本地日志參考類

package com.tcs.irecr.util;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
/**
 * 本地日志參考類
 * @author Administrator
 *
 */
public class LogUtils {
	 /**
 * 獲取業務日志logger
 *
 * @return
 */
 public static Logger getBussinessLogger() {
 return LoggerFactory.getLogger(LogEnum.BUSSINESS.getCategory());
 }
 
 /**
 * 獲取平臺日志logger
 *
 * @return
 */
 public static Logger getPlatformLogger() {
 return LoggerFactory.getLogger(LogEnum.PLATFORM.getCategory());
 }
 
 /**
 * 獲取數據庫日志logger
 *
 * @return
 */
 public static Logger getDBLogger() {
 return LoggerFactory.getLogger(LogEnum.DB.getCategory());
 }
 
 
 /**
 * 獲取異常日志logger
 *
 * @return
 */
 public static Logger getExceptionLogger() {
 return LoggerFactory.getLogger(LogEnum.EXCEPTION.getCategory());
 }
 
}

五, 運行時自動在工程目錄下生產日志目錄和日志文件

在這裡插入圖片描述

六, 原文章傳送門

點這裡

第五章 Spring Boot集成lombok

前言

簡潔代碼,很實用的插件

一,Maven 依賴 pom.xml配置

1. 導入依賴包

<dependency>
	<groupId>org.projectlombok</groupId>
	<artifactId>lombok</artifactId>
</dependency>

2. 使用IDEA需要安裝Lombok插件,我這裡已經下載好,如果沒下載安裝點擊install進行下載安裝即可

在這裡插入圖片描述

3. 實體類演示@Data—-簡化get/set,toString等方法,@Slf4j——簡化 protected final Logger logger = LoggerFactory.getLogger(this.getClass());

在這裡插入圖片描述

import lombok.Data;

@Data
public class UserInfoDto {
 private Integer id;
 private String name;
}

在這裡插入圖片描述

import com.example.test.dto.UserInfoDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@Slf4j
public class helloController {
 @RequestMapping("/index")
 public String sayHello(){
 UserInfoDto userInfoDto = new UserInfoDto();
 userInfoDto.setId(1);
 userInfoDto.setName("天下第一");
 log.info("打印結果是-----"+userInfoDto.toString());
 return "index";
 }
}

3.其他特性

@Data 標簽,生成getter/setter toString()等方法 
@NonNull : 讓你不在擔憂並且愛上NullPointerException 
@CleanUp : 自動資源管理:不用再在finally中添加資源的close方法 
@Setter/@Getter : 自動生成set和get方法 
@ToString : 自動生成toString方法 
@EqualsAndHashcode : 從對象的字段中生成hashCode和equals的實現 
@NoArgsConstructor/@RequiredArgsConstructor/@AllArgsConstructor 
自動生成構造方法 
@Data : 自動生成set/get方法,toString方法,equals方法,hashCode方法,不帶參數的構造方法 
@Value : 用於註解final類 
@Builder : 產生復雜的構建器api類
@SneakyThrows : 異常處理(謹慎使用) 
@Synchronized : 同步方法安全的轉化 
@Getter(lazy=true) : 
@Log : 支持各種logger對象,使用時用對應的註解,如:@Log4

第六章 Spring Boot使用@Async實現異步調用

前言

現實中校驗excel時可能會用到,之前項目校驗上傳數據時我是單開瞭個線程完成通知,看這次能不能替換實現。

一,Controller類

1. 啟動加上@EnableAsync

在這裡插入圖片描述

import com.example.test.service.MemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * springboot異步調用
 */
@RestController
@Slf4j
@EnableAsync // 開啟異步調用
public class MemberController {
 @Autowired
 private MemberService memberService;
 @RequestMapping("/addMemberAndEmail")
 public String addMemberAndEmail(){
 log.info("1");
 String result = memberService.addMemberAndEmail();
 log.info("4");
 return "result"+result;
 }
}

2.需要執行異步方法上加入 @Async,在方法上加上@Async之後 底層使用多線程技術

![在這裡插入圖片描述](//img.jbzj.com/file_images/article/202102/2021020614501782.png

import com.example.test.service.MemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class MemberServiceImpl implements MemberService {
 @Override
 @Async // 相當於此方法單獨開辟一個新線程執行
 public String addMemberAndEmail() {
 log.info("2");
 try {
 Thread.sleep(5000);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 log.info("3");
 return "2021新年好!!!";
 }
}

3.執行結果未加 @Async和@Async

在這裡插入圖片描述
在這裡插入圖片描述

4.執行結果加 @Async和@Async

在這裡插入圖片描述
在這裡插入圖片描述

第七章 Spring Boot不同環境配置文件

前言

註意:yml文件冒號前一定要加空格…

[email protected]的使用與開發,測試,生產環境不同配置文件使用

1. 此處僅用開發環境文件做演示,建立application-dev.yml文件

在這裡插入圖片描述

2. 配置application.yml文件

在這裡插入圖片描述

代碼

spring:
 profiles:
 active: dev

3. 演示代碼controller層

import com.example.test.service.MemberService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ValueController {
 @Autowired
 private MemberService memberService;


 @RequestMapping("/testValue")
 public String testValue(){
 return memberService.readUrlbyValue();
 }
}

4. 演示代碼servicer層

import com.example.test.service.MemberService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service
@Slf4j
public class MemberServiceImpl implements MemberService {

 @Value("${devurl}")
 private String devurl;

 @Override
 @Async // 相當於此方法單獨開辟一個新線程執行
 public String addMemberAndEmail() {
 log.info("2");
 try {
 Thread.sleep(5000);
 } catch (InterruptedException e) {
 e.printStackTrace();
 }
 log.info("3");
 return "2021新年好!!!";
 }

 @Override
 public String readUrlbyValue() {
 return devurl;
 }
}

5. 運行結果

![在這裡插入代碼片](https://img-blog.csdnimg.cn/20210205103858693.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3llamlhbGlhbmd6aQ==,size_16,color_FFFFFF,t_70)

第八章 Spring Boot與mybatis三劍客

前言

說實話今天我為瞭整合這個踩瞭不少坑,花瞭將近半天時間才成功。這裡記下來避免好學者和我一樣查資料浪費時間

一.逆向生成文件–神器MyBatis-Generator

1.首先不多說pom.xml導入需要架包,這裡踩坑一,我之前用的mysql-connector-java版本是8.0.12,而我的mysql版本隻有 5.7.33,生成時會報 CLIENT_PLUGIN_AUTH is required錯誤,而且驅動應該改成”com.mysql.cj.jdbc.Driver”而不是”com.mysql.jdbc.Driver”。

 <dependency>
 <groupId>com.alibaba</groupId>
 <artifactId>druid-spring-boot-starter</artifactId>
 <version>1.1.10</version>
 </dependency>
 <dependency>
 <groupId>mysql</groupId>
 <artifactId>mysql-connector-java</artifactId>
 <version>5.1.41</version>
 <scope>runtime</scope>
 </dependency>

		 <!--MBG插件-->
 <plugin>
 <groupId>org.mybatis.generator</groupId>
 <artifactId>mybatis-generator-maven-plugin</artifactId>
 </plugin>

2. 配置generatorConfig.xml文件, 配置文件中的是配置驅動的一個簡單的方式,可以通過location制定路徑。

​ 元素用於指定生成一組對象的環境。例如指定要連接的數據庫,要生成對象的類型和要處理的數據庫中的表。其中的defaultModelType屬性很重要,這個屬性定義瞭MBG如何生成實體類,推薦使用flat模式,為每一張表隻生成一個包含表所有字段的實體類。

​ 指定生成實體類的生成路徑,trimStrings屬性會對查詢條件進行trim操作,默認值是false。

​ 指定生成xml文件的路徑。

​ 指定生成dao接口。

可以配置多個,用於指定生成數據庫中的那個表的底層類,可以指定生成的實體類的name,enableCountXXX屬性可以去除不需要的sql方法,其中columnOverride可以指定表中使用的枚舉類,ignoreColumn可以忽略表中的字段,columnOverride和ignoreColumn可以指定0個或多個。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
 PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
 "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">

<generatorConfiguration>
 <classPathEntry
 location="F:\repository\mysql\mysql-connector-java\5.1.41\mysql-connector-java-5.1.41.jar"/>

 <context id="MysqlTables" targetRuntime="MyBatis3" defaultModelType="flat">

 <property name="javaFileEncoding" value="UTF-8"/>

 <commentGenerator>
 <property name="suppressDate" value="false"/>
 <property name="addRemarkComments" value="true"/>
 <property name="suppressAllComments" value="false"/>
 </commentGenerator>

 <jdbcConnection driverClass="com.mysql.jdbc.Driver"
 connectionURL="jdbc:mysql://192.168.70.122:8066/TESTDB?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false"
 userId="root"
 password="123456">
 <property name="nullCatalogMeansCurrent" value="true"/>
 </jdbcConnection>

 <javaTypeResolver>
 <property name="forceBigDecimals" value="false"/>
 </javaTypeResolver>

 <javaModelGenerator targetPackage="com.example.test.entity"
 targetProject="src\main\java">
 <property name="enableSubPackages" value="true"/>
 <property name="trimStrings" value="true"/>
 </javaModelGenerator>

 <sqlMapGenerator targetPackage="mappers" targetProject="src\main\resources">
 <property name="enableSubPackages" value="true"/>
 </sqlMapGenerator>

 <javaClientGenerator type="XMLMAPPER" targetPackage="com.example.test.dao"
 targetProject="src\main\java">
 <property name="enableSubPackages" value="true"/>
 </javaClientGenerator>


 <table schema="" tableName="user_info" enableCountByExample="true" domainObjectName="userInfo">
 </table>

 <!-- <table schema="ins_personal_claim" tableName="claim_image_info" enableCountByExample="false" domainObjectName="ClaimImageInfo">
 <columnOverride column="image_type" javaType="com.jd.ins.personal.claim.domain.enums.ImageType" typeHandler="org.apache.ibatis.type.EnumTypeHandler"/>
 <ignoreColumn column="create_time"/>
 <ignoreColumn column="update_time"/>
 </table>-->

 </context>
</generatorConfiguration>

3. mvn install 和點擊myBatis-Generator生產文件

在這裡插入圖片描述

4. 結果

在這裡插入圖片描述

二.mybatis plugin

1. mybatis plugin作為一款優秀的mybatis跳轉插件

在這裡插入圖片描述

2. 安裝重啟,分頁插件就不說瞭,項目中用別的插件。

在這裡插入圖片描述
在這裡插入圖片描述

到此這篇關於SpringBoot項目從搭建到發佈一條龍的文章就介紹到這瞭,更多相關SpringBoot項目搭建發佈內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!