SpringBoot集合(二):SpringBoot集成MyBatis-Plus


一、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包。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM