当前位置:   article > 正文

Springboot+Mybatis-puls整合_springboot+mybatisplus

springboot+mybatisplus

一、Springboot+Mybatis-puls整合

1.1、简介Mybtis-Plus

  MyBatis-Plus 是一个 Mybatis 增强版工具,在 MyBatis 上扩充了其他功能没有改变其基本功能,为了简化开发提交效率而存在。

官网文档地址:https://mp.baomidou.com/guide/

MyBatis-Plus 特性:https://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A7

1.2、使用 SpringBoot 快速使用 MyBatis-Plus

(1)准备工作

  1. 需要 Java 开发环境(JDK)
  2. 以及相应的开发工具(IDE)。  
  3. 需要 maven(用来下载相关依赖的 jar 包)。  
  4. 需要 SpringBoot。  
  5. 可以使用 IDEA 安装一个 mybatis-plus 插件。

(2)创建一个 SpringBoot 项目。  

方式一:去官网 https://start.spring.io/ 初始化一个,然后导入 IDE 工具即可。  

方式二:直接使用 IDE 工具创建一个。 Spring Initializer。

推荐使用国内:https://start.aliyun.com/

 (3)添加 MyBatis-Plus 依赖(mybatis-plus-boot-starter

  1. <!--mybatis-plus依赖-->
  2. <dependency>
  3. <groupId>com.baomidou</groupId>
  4. <artifactId>mybatis-plus-boot-starter</artifactId>
  5. <version>3.4.2</version>
  6. </dependency>

(4)为了测试开发,此处使用 mysql8,需要引入 mysql 相关依赖。  

为了简化代码,引入 lombok 依赖(减少 getter、setter 等方法)。

  1. <!--mysql依赖-->
  2. <dependency>
  3. <groupId>mysql</groupId>
  4. <artifactId>mysql-connector-java</artifactId>
  5. <scope>runtime</scope>
  6. </dependency>
  7. <!--lombok依赖-->
  8. <dependency>
  9. <groupId>org.projectlombok</groupId>
  10. <artifactId>lombok</artifactId>
  11. <optional>true</optional>
  12. </dependency>

(5)在  <build> </build>里面添加如下进行yml、properties、xml自动扫描

  1. <build>
  2. <resources>
  3. <resource>
  4. <directory>src/main/java</directory>
  5. <includes>
  6. <include>**/*.yml</include>
  7. <include>**/*.properties</include>
  8. <include>**/*.xml</include>
  9. </includes>
  10. <filtering>false</filtering>
  11. </resource>
  12. <resource>
  13. <directory>src/main/resources</directory>
  14. <includes>
  15. <include>**/*.yml</include>
  16. <include>**/*.properties</include>
  17. <include>**/*.xml</include>
  18. </includes>
  19. <filtering>false</filtering>
  20. </resource>
  21. </resources>
  22. </build>

(6)完整依赖文件(pom.xml)

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.zwl</groupId>
  6. <artifactId>springboot_04</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>springboot_04</name>
  9. <description>Demo project for Spring Boot</description>
  10. <properties>
  11. <java.version>1.8</java.version>
  12. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  13. <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
  14. <spring-boot.version>2.3.7.RELEASE</spring-boot.version>
  15. </properties>
  16. <dependencies>
  17. <!--mybatis-plus-->
  18. <dependency>
  19. <groupId>com.baomidou</groupId>
  20. <artifactId>mybatis-plus-boot-starter</artifactId>
  21. <version>3.4.2</version>
  22. </dependency>
  23. <!--mybatis-->
  24. <!-- <dependency>-->
  25. <!-- <groupId>org.mybatis.spring.boot</groupId>-->
  26. <!-- <artifactId>mybatis-spring-boot-starter</artifactId>-->
  27. <!-- <version>2.2.0</version>-->
  28. <!-- </dependency>-->
  29. <!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
  30. <dependency>
  31. <groupId>com.alibaba</groupId>
  32. <artifactId>druid</artifactId>
  33. <version>1.2.8</version>
  34. </dependency>
  35. <!-- log4j-->
  36. <dependency>
  37. <groupId>log4j</groupId>
  38. <artifactId>log4j</artifactId>
  39. <version>1.2.17</version>
  40. </dependency>
  41. <!-- jdbc-->
  42. <dependency>
  43. <groupId>org.springframework.boot</groupId>
  44. <artifactId>spring-boot-starter-jdbc</artifactId>
  45. </dependency>
  46. <!-- web-->
  47. <dependency>
  48. <groupId>org.springframework.boot</groupId>
  49. <artifactId>spring-boot-starter-web</artifactId>
  50. </dependency>
  51. <!--mysql-->
  52. <dependency>
  53. <groupId>mysql</groupId>
  54. <artifactId>mysql-connector-java</artifactId>
  55. <version>8.0.26</version>
  56. </dependency>
  57. <dependency>
  58. <groupId>org.springframework.boot</groupId>
  59. <artifactId>spring-boot-starter-test</artifactId>
  60. <scope>test</scope>
  61. <exclusions>
  62. <exclusion>
  63. <groupId>org.junit.vintage</groupId>
  64. <artifactId>junit-vintage-engine</artifactId>
  65. </exclusion>
  66. </exclusions>
  67. </dependency>
  68. <!--lombok-->
  69. <dependency>
  70. <groupId>org.projectlombok</groupId>
  71. <artifactId>lombok</artifactId>
  72. </dependency>
  73. <dependency>
  74. <groupId>com.baomidou</groupId>
  75. <artifactId>mybatis-plus-extension</artifactId>
  76. <version>3.4.3.4</version>
  77. </dependency>
  78. </dependencies>
  79. <dependencyManagement>
  80. <dependencies>
  81. <dependency>
  82. <groupId>org.springframework.boot</groupId>
  83. <artifactId>spring-boot-dependencies</artifactId>
  84. <version>${spring-boot.version}</version>
  85. <type>pom</type>
  86. <scope>import</scope>
  87. </dependency>
  88. </dependencies>
  89. </dependencyManagement>
  90. <build>
  91. <!--配置扫描文件-->
  92. <resources>
  93. <resource>
  94. <directory>src/main/java</directory>
  95. <includes>
  96. <include>**/*.yml</include>
  97. <include>**/*.properties</include>
  98. <include>**/*.xml</include>
  99. </includes>
  100. <filtering>false</filtering>
  101. </resource>
  102. <resource>
  103. <directory>src/main/resources</directory>
  104. <includes>
  105. <include>**/*.yml</include>
  106. <include>**/*.properties</include>
  107. <include>**/*.xml</include>
  108. </includes>
  109. <filtering>false</filtering>
  110. </resource>
  111. </resources>
  112. <plugins>
  113. <plugin>
  114. <groupId>org.apache.maven.plugins</groupId>
  115. <artifactId>maven-compiler-plugin</artifactId>
  116. <version>3.8.1</version>
  117. <configuration>
  118. <source>1.8</source>
  119. <target>1.8</target>
  120. <encoding>UTF-8</encoding>
  121. </configuration>
  122. </plugin>
  123. <plugin>
  124. <groupId>org.springframework.boot</groupId>
  125. <artifactId>spring-boot-maven-plugin</artifactId>
  126. <version>2.3.7.RELEASE</version>
  127. <configuration>
  128. <mainClass>com.zwl.Springboot04Application</mainClass>
  129. </configuration>
  130. <executions>
  131. <execution>
  132. <id>repackage</id>
  133. <goals>
  134. <goal>repackage</goal>
  135. </goals>
  136. </execution>
  137. </executions>
  138. </plugin>
  139. </plugins>
  140. </build>
  141. </project>

(6)使用一个表进行测试。

  仅供参考,可以定义 创建时间、修改时间等字段。

  1. DROP DATABASE IF EXISTS testMyBatisPlus;
  2. CREATE DATABASE testMyBatisPlus;
  3. USE testMyBatisPlus;
  4. DROP TABLE IF EXISTS user;
  5. CREATE TABLE user
  6. (
  7.   id BIGINT(20) NOT NULL COMMENT '主键ID',
  8.   name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
  9.   age INT(11) NULL DEFAULT NULL COMMENT '年龄',
  10.   email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
  11.   PRIMARY KEY (id)
  12. );
  13. INSERT INTO user (id, name, age, email) VALUES
  14. (1, 'Jone', 18, 'test1@qq.com'),
  15. (2, 'Jack', 20, 'test2@qq.com'),
  16. (3, 'Tom', 28, 'test3@qq.com'),
  17. (4, 'Sandy', 21, 'test4@qq.com'),
  18. (5, 'Billie', 24, 'test5@qq.com');

(7)在 application.yml 文件中配置 mysql 数据源信息。

mysql5如下配置

  1. spring:
  2. datasource:
  3. driver-class-name: com.mysql.jdbc.Driver
  4. url: jdbc:mysql://localhost:3306/testMyBatisPlus?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
  5. username: root
  6. password: root
  7. thymeleaf:
  8. cache: false #设置为false,否则会有缓存,导致页面没法及时看到更新后的效果。
  9. #修改端口号默认是8080
  10. server:
  11. port: 8888
  12. #mybatis-plus相关配置
  13. mybatis-plus:
  14. mapper-locations: classpath:mapper/*.xml #扫描mapper下的所有xml文件
  15. configuration:
  16. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  17. type-aliases-package: com.zwl.entity #扫描实体类包/配置别名

mysql8如下配置

  1. # mysql连接信息
  2. spring:
  3. datasource:
  4.   driver-class-name: com.mysql.cj.jdbc.Driver
  5.   url: jdbc:mysql://localhost:3306/testMyBatisPlus?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&rewriteBatchedStatements=true
  6.   username: root
  7.   password: root
  8. thymeleaf:
  9.   cache: false  #设置为false,否则会有缓存,导致页面没法及时看到更新后的效果。
  10. #修改端口号默认是8080
  11. server:
  12. port: 8888
  13. #mybatis-plus相关配置
  14. mybatis-plus:
  15. mapper-locations: classpath:mapper/*.xml #扫描mapper下的所有xml文件
  16. configuration:
  17. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  18. type-aliases-package: com.zwl.entity #扫描实体类包/配置别名

(8)编写实体类、Service、ServiceImpl、UserMapper、UserMapper.xml等文件文件

方法一:手动编写(容易出错)

(1)编写表对应的 实体类User。

  1. import lombok.Data;
  2. @Data
  3. public class Users {
  4.    private Long id;
  5.    private String name;
  6.    private int age;
  7.    private String email;
  8. }

(2)编写操作实体类的 Mapper 类。  

        直接继承 BaseMapper,这是 mybatis-plus 封装好的类。

  1. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  2. import com.zx.mybatis_plus.bean.Users;
  3. public interface UsersMapper extends BaseMapper<Users> {
  4. }

BaseMapper封装了CRUD相关的方法

(3)实体类、Mapper 类都写好了,就可以使用了。  

        Step1:先得在启动类里扫描 Mapper 类,即添加 @MapperScan 注解

  1. import org.mybatis.spring.annotation.MapperScan;
  2. import org.springframework.boot.SpringApplication;
  3. import org.springframework.boot.autoconfigure.SpringBootApplication;
  4. @MapperScan("com.zwl.mapper") //填写对应mapper存放位置,自动识别mapper下的所有**Mapper
  5. @SpringBootApplication
  6. public class MybatisplusDemoApplication {
  7.    public static void main(String[] args) {
  8.        SpringApplication.run(MybatisplusDemoApplication.class, args);
  9.   }
  10. }

  Step2:写一个测试类测试一下。

  1. import com.zwl.entity.User;
  2. import com.zwl.mapper.UserMapper;
  3. import org.junit.jupiter.api.Test;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.boot.test.context.SpringBootTest;
  6. import java.util.List;
  7. @SpringBootTest
  8. class Springboot05ApplicationTests {
  9. @Autowired
  10. UserMapper userMapper;
  11. //查询所有用户
  12. @Test
  13. void contextLoads() {
  14. List<User> users = userMapper.selectList(null);
  15. for (User user : users) {
  16. System.out.println(user);
  17. }
  18. }
  19. //根据ID查询当前用户
  20. @Test
  21. void test1() {
  22. User user = userMapper.selectById(2);
  23. System.out.println(user);
  24. }
  25. }

方法二:通过 IDEA 的Database与Mybatisx插件自动生成

(9)总结:通过以上简单操作,就能对 user 表进行 CRUD 操作,不需要去编写 xml 文件。

           注:若遇到 @Autowired 标记的变量出现 红色下划线,但是不影响 正常运行。

 可以进入 Settings,找到 Inspection,并选择其中的 Spring Core -> Code -> Autowiring for Bean Class,将 Error 改为 Warning,即可。

二、Mybatis-Plus内置方法

如下:

Mybtis-Plus常用的内置方法_程序员柒七的博客-CSDN博客_mybatisplus自带方法

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/665642
推荐阅读
相关标签
  

闽ICP备14008679号