一、MyBatis-Plus簡介:
雖然mybatis可以直接在xml中通過SQL語句操作數據庫,很是靈活。但正其操作都要通過SQL語句進行,就必須寫大量的xml文件,很是麻煩。mybatis-plus就很好的解決了這個問題。
MyBatis-Plus(簡稱 MP)是一個 MyBatis 的增強工具,在 MyBatis 的基礎上只做增強不做改變,為簡化開發、提高效率而生。
關於mybatis-plus的更多介紹及特性,可以參考mybatis-plus官網。
二、SpringBoot集成MyBatis-Plus:
1、首先要創建一個SpringBoot項目。如何創建請查看《創建一個SpringBoot項目》。
2、加入相關的依賴。
正如官方所說,mybatis-plus在mybatis的基礎上只做增強不做改變,因此其與spring的整合亦非常簡單。只需把mybatis的依賴換成mybatis-plus的依賴,再把sqlSessionFactory換成mybatis-plus的即可。如下:

1 <dependencies>
2 <dependency>
3 <groupId>org.springframework.boot</groupId>
4 <artifactId>spring-boot-starter-web</artifactId>
5 </dependency>
6
7 <dependency>
8 <groupId>org.springframework.boot</groupId>
9 <artifactId>spring-boot-starter-test</artifactId>
10 <scope>test</scope>
11 <exclusions>
12 <exclusion>
13 <groupId>org.junit.vintage</groupId>
14 <artifactId>junit-vintage-engine</artifactId>
15 </exclusion>
16 </exclusions>
17 </dependency>
18 <!-- 這是mysql的依賴 -->
19 <dependency>
20 <groupId>mysql</groupId>
21 <artifactId>mysql-connector-java</artifactId>
22 <scope>runtime</scope>
23 </dependency>
24 <!-- 這是lombok的依賴 -->
25 <dependency>
26 <groupId>org.projectlombok</groupId>
27 <artifactId>lombok</artifactId>
28 <optional>true</optional>
29 </dependency>
30 <!-- 這是mybatis-plus依賴 -->
31 <dependency>
32 <groupId>com.baomidou</groupId>
33 <artifactId>mybatis-plus-boot-starter</artifactId>
34 <version>3.1.1</version>
35 </dependency>
36 <dependency>
37 <groupId>com.baomidou</groupId>
38 <artifactId>mybatis-plus</artifactId>
39 <version>3.0.5</version>
40 </dependency>
41 <dependency>
42 <groupId>org.springframework.boot</groupId>
43 <artifactId>spring-boot-starter-jdbc</artifactId>
44 </dependency>
45 <!-- 這是mybatis-plus的代碼自動生成器 -->
46 <dependency>
47 <groupId>com.baomidou</groupId>
48 <artifactId>mybatis-plus-generator</artifactId>
49 <version>3.1.1</version>
50 </dependency>
51 <!-- 這是模板引擎依賴 -->
52 <dependency>
53 <groupId>org.freemarker</groupId>
54 <artifactId>freemarker</artifactId>
55 </dependency>
56 <!--熱部署 每次修改代碼springboot自動重啟服務-->
57 <dependency>
58 <groupId>org.springframework.boot</groupId>
59 <artifactId>spring-boot-devtools</artifactId>
60 <optional>true</optional>
61 </dependency>
62 <!--數據庫連接池 -->
63 <dependency>
64 <groupId>com.alibaba</groupId>
65 <artifactId>druid</artifactId>
66 <version>1.1.21</version>
67 </dependency>
68 <!--單元測試 -->
69 <dependency>
70 <groupId>junit</groupId>
71 <artifactId>junit</artifactId>
72 </dependency>
73 </dependencies>
3、加入相關的配置。

1 #端口號 2 server: 3 port: 8088
4 #數據庫的配置信息 5 spring: 6 datasource: #數據源配置 7 url: jdbc:mysql://rm-hp3qgn64g7i3s4yujco.mysql.huhehaote.rds.aliyuncs.com:3306/app?characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&autoReconnect=true&failOverReadOnly=false&zeroDateTimeBehavior=convertToNull&useSSL=false&allowMultiQueries=true
8 driver-class-name: com.mysql.cj.jdbc.Driver 9 username: 10 password: 11 platform: mysql 12 type: com.alibaba.druid.pool.DruidDataSource 13 druid: 14 initial-size: 5 #初始化時建立物理連接的個數 15 min-idle: 5 #最小連接池數量 16 max-active: 200 #最大連接池數量 17 max-wait: 1200 #獲取連接時最大等待時間,單位毫秒 18 pool-prepared-statements: false #PSCache對支持游標的數據庫性能提升巨大,比如說oracle。在mysql下建議關閉 19 validation-query: SELECT 1
20 validation-query-timeout: 3
21 test-while-idle: true
22 test-on-borrow: true
23 test-on-return: true
24 time-between-eviction-runs-millis: 60000 #test-while-idle的判斷依據 25 min-evictable-idle-time-millis: 30000 #連接保持空閑而不被驅逐的最小時間 26 async-close-connection-enable: true
27 filters: stat,wall,slf4j 28 filter: 29 stat: 30 db-type: mysql 31 log-slow-sql: true
32 slow-sql-millis: 2000
33 wall: 34 enabled: true
35 db-type: mysql 36
37 redis: 38 host: 39.104.60.156
39 port: 6379
40 password: 41 database: 10
42 lettuce: 43 pool: 44 max-idle: 8
45 min-idle: 0
46 max-active: 8
47 max-wait: -1
48 mybatis: 49 #開啟駝峰命名法 50 configuration: 51 map-underscore-to-camel-case: true
52
53 mybatis-plus: 54 #mybatis 55 #Mapper路徑 56 # 如果是放在src/main/java目錄下 classpath:/com/yourpackage/*/mapper/*Mapper.xml 57 # 如果是放在resource目錄 classpath:/mapper/*Mapper.xml 58 mapper-locations: classpath:mappers/*Mapper.xml 59 # 實體掃描,多個package用逗號或者分號分隔 60 type-aliases-package: com.example.demo.entity #自己的實體類地址 61 configuration: 62 # 這個配置會將執行的sql打印出來,在開發或測試的時候可以用 63 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 64 #數據庫字段與數據對象字段的映射策略 65 map-underscore-to-camel-case: true 66 cache-enabled: false 67
68 global-config: 69 db-config: 70 # #主鍵類型 0:"數據庫ID自增", 1:"用戶輸入ID",2:"全局唯一ID (數字類型唯一ID)", 3:"全局唯一ID UUID"; 71 # id-type: id_worker 72 # #字段策略 0:"忽略判斷",1:"非 NULL 判斷"),2:"非空判斷" 73 # field-strategy: not_empty 74 # #駝峰下划線轉換 75 # column-underline: true 76 # #數據庫大寫下划線轉換 77 # #capital-mode: true 78 # #邏輯刪除配置 79 # logic-delete-value: Y 80 # logic-not-delete-value: N 81 #數據庫類型。支持主流的數據庫 82 db-type: mysql 83 #刷新mapper 調試神器 84 refresh: true 85 # sql-injector: com.baomidou.mybatisplus.extension.injector.LogicSqlInjector 86 #自定義填充策略接口實現 87 #meta-object-handler: com.baomidou.springboot.xxx 88 #自定義SQL注入器 89 #sql-injector: com.baomidou.springboot.xxx
ps:此處自行配置數據庫的相關信息。
4、MyBatis-Plus配置類。

1 package com.example.demo.config; 2
3 import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; 4 import com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor; 5 import org.springframework.context.annotation.Bean; 6 import org.springframework.context.annotation.Configuration; 7
8 @Configuration 9 public class MybatisPlusConfig { 10
11 /*** 12 * Description:plus 的性能優化 13 * @author yang 14 * @since 2020-04-02 15 */
16 @Bean 17 public PerformanceInterceptor performanceInterceptor() { 18 PerformanceInterceptor performanceInterceptor = new PerformanceInterceptor(); 19 /*<!-- SQL 執行性能分析,開發環境使用,線上不推薦。 maxTime 指的是 sql 最大執行時長 -->*/
20 performanceInterceptor.setMaxTime(1000); 21 /*<!--SQL是否格式化 默認false-->*/
22 performanceInterceptor.setFormat(true); 23 return performanceInterceptor; 24 } 25
26 /**
27 * @Description : mybatis-plus分頁插件 28 * @author yang 29 * @since 2020-04-02 30 */
31 @Bean 32 public PaginationInterceptor paginationInterceptor() { 33 return new PaginationInterceptor(); 34 } 35
36 }
5、項目結構。
三、MyBatis-Plus代碼生成器:
代碼生成器可以按照自己的配置,生成數據庫中表相對應的Entity,Controller,Mapper,Service,ServiceImpl以及Mapper.xml。
具體代碼已上傳至GitHub。
代碼生成器的詳細功能及配置請參照mybatis-plus官網。
四、一些注意事項。
1、配置完成后,注意在啟動類中加入 @MapperScan("com.example.demo.mapper") MyBatis的包掃描路徑。
2、實體類中,MyBatis-Plus只把id作為主鍵字典,非id的字段,需要@tableId來標注。其他注解參照官網。
3、mybatis-plus的核心jar包中已集成了mybatis和mybatis-spring,所以為避免沖突,請勿再次引用這兩個jar包。