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