SpringBoot集成MyBatis-Plus

老子叫甜甜 提交于 2020-04-02 19:23:42

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

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!