快速开始

我们将通过一个简单的 Demo 来阐述 MyBatis-Plus 的强大功能,在此之前,我们假设您已经:

  • 拥有 Java 开发环境以及相应 IDE
  • 熟悉 Spring Boot
  • 熟悉 Maven

现有一张 User 表,其表结构如下:

idnameageemail
1Jone18test1@baomidou.com
2Jack20test2@baomidou.com
3Tom28test3@baomidou.com
4Sandy21test4@baomidou.com
5Billie24test5@baomidou.com

其对应的数据库 Schema 脚本如下:

  1. DROP TABLE IF EXISTS user;
  2. CREATE TABLE user
  3. (
  4. id BIGINT(20) NOT NULL COMMENT '主键ID',
  5. name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
  6. age INT(11) NULL DEFAULT NULL COMMENT '年龄',
  7. email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
  8. PRIMARY KEY (id)
  9. );

其对应的数据库 Data 脚本如下:

  1. DELETE FROM user;
  2. INSERT INTO user (id, name, age, email) VALUES
  3. (1, 'Jone', 18, 'test1@baomidou.com'),
  4. (2, 'Jack', 20, 'test2@baomidou.com'),
  5. (3, 'Tom', 28, 'test3@baomidou.com'),
  6. (4, 'Sandy', 21, 'test4@baomidou.com'),
  7. (5, 'Billie', 24, 'test5@baomidou.com');

Question

如果从零开始用 MyBatis-Plus 来实现该表的增删改查我们需要做什么呢?

初始化工程

创建一个空的 Spring Boot 工程(工程将以 H2 作为默认数据库进行演示)

可以使用 Spring Initializer快速开始 - 图1 快速初始化一个 Spring Boot 工程

添加依赖

引入 Spring Boot Starter 父工程:

  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>spring-latest-version</version>
  5. <relativePath/>
  6. </parent>

引入 spring-boot-starterspring-boot-starter-testmybatis-plus-boot-starterlombokh2 依赖:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter</artifactId>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.springframework.boot</groupId>
  8. <artifactId>spring-boot-starter-test</artifactId>
  9. <scope>test</scope>
  10. </dependency>
  11. <dependency>
  12. <groupId>org.projectlombok</groupId>
  13. <artifactId>lombok</artifactId>
  14. <optional>true</optional>
  15. </dependency>
  16. <dependency>
  17. <groupId>com.baomidou</groupId>
  18. <artifactId>mybatis-plus-boot-starter</artifactId>
  19. <version>starter-latest-version</version>
  20. </dependency>
  21. <dependency>
  22. <groupId>com.h2database</groupId>
  23. <artifactId>h2</artifactId>
  24. <scope>runtime</scope>
  25. </dependency>
  26. </dependencies>

配置

application.yml 配置文件中添加 H2 数据库的相关配置:

  1. # DataSource Config
  2. spring:
  3. datasource:
  4. driver-class-name: org.h2.Driver
  5. schema: classpath:db/schema-h2.sql
  6. data: classpath:db/data-h2.sql
  7. url: jdbc:h2:mem:test
  8. username: root
  9. password: test

在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:

  1. @SpringBootApplication
  2. @MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
  3. public class Application {
  4. public static void main(String[] args) {
  5. SpringApplication.run(QuickStartApplication.class, args);
  6. }
  7. }

编码

编写实体类 User.java(此处使用了 Lombok快速开始 - 图2 简化代码)

  1. @Data
  2. public class User {
  3. private Long id;
  4. private String name;
  5. private Integer age;
  6. private String email;
  7. }

编写Mapper类 UserMapper.java

  1. public interface UserMapper extends BaseMapper<User> {
  2. }

开始使用

添加测试类,进行功能测试:

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest
  3. public class SampleTest {
  4. @Autowired
  5. private UserMapper userMapper;
  6. @Test
  7. public void testSelect() {
  8. System.out.println(("----- selectAll method test ------"));
  9. List<User> userList = userMapper.selectList(null);
  10. Assert.assertEquals(5, userList.size());
  11. userList.forEach(System.out::println);
  12. }
  13. }

UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper,所以不填写就是无任何条件

控制台输出:

  1. User(id=1, name=Jone, age=18, email=test1@baomidou.com)
  2. User(id=2, name=Jack, age=20, email=test2@baomidou.com)
  3. User(id=3, name=Tom, age=28, email=test3@baomidou.com)
  4. User(id=4, name=Sandy, age=21, email=test4@baomidou.com)
  5. User(id=5, name=Billie, age=24, email=test5@baomidou.com)

完整的代码示例请移步:Spring Boot 快速启动示例快速开始 - 图3 | Spring MVC 快速启动示例快速开始 - 图4

小结

通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!

从以上步骤中,我们可以看到集成MyBatis-Plus非常的简单,只需要引入 starter 工程,并配置 mapper 扫描路径即可。

但 MyBatis-Plus 的强大远不止这些功能,想要详细了解 MyBatis-Plus 的强大功能?那就继续往下看吧!