一、Mybatis-Plus 概述

Mybatis-Plus 支持非常多的数据库,常规的有 MySQLH2SQLiteSQLServer 等等。

这边我将使用 H2 数据库做一次测试。

二、本地 H2 数据的配置

2.1 下载和配置 H2 数据库

H2数据库官网:https://www.h2database.com/html/main.html

在本地用户目录底下新建一个文件 test.mv.dtest表示数据库名称,你可以自定义名称。

在本地H2 目录下找到 h2\bin\h2.bat文件,这个是 windows 控制台的启动脚本,双击运行,会启动 H2Web 控制台。
image.png
点击测试连接,如果测试成功,记下驱动类、JDBC URL、用户名和密码。

2.2 IDEA 连接 H2 数据库

先在 pom.xml中引入依赖

  1. <dependency>
  2. <groupId>com.h2database</groupId>
  3. <artifactId>h2</artifactId>
  4. <version>2.1.210</version>
  5. <scope>runtime</scope>
  6. </dependency>

IDEA 的数据库选项卡中新建「数据源」,选择 H2 数据源。

然后填入刚才的那些数据,最后测试一下连接。
image.png

2.3 新建表和插入数据

2.3.1 新建表

右键数据库点击「跳转到查询控制台」,输入创建表的命令:

  1. create table user_test
  2. (
  3. id int primary key not null,
  4. name varchar(30) null,
  5. age int null,
  6. email varchar(50) null
  7. )

执行完毕,输入一下显示表的命令:

show tables

image.png
发现已经新建了表。

2.3.2 插入数据

输入插入的 sql 语句:

  1. insert into user_test(id, name, age, email)
  2. values
  3. (1, 'Jone', 18, 'yunhu1@gmail.com'),
  4. (2, 'Jack', 20, 'yunhu2@gmail.com'),
  5. (3, 'Tom', 28, 'yunhu3@gmail.com'),
  6. (4, 'Sandy', 21, 'yunhu4@gmail.com'),
  7. (5, 'Billie', 24, 'yunhu5@gmail.com');

插入执行完毕后,执行查看表的命令:

select * from user_test

image.png

三、Mybatis-Plus 的配置

3.1 项目结构

  1. ├─main
  2. ├─java
  3. └─com
  4. └─example
  5. └─mybatisplusdemo
  6. MybatisplusdemoApplication.java
  7. ├─controller
  8. UserController.java
  9. ├─entity
  10. User.java
  11. └─mapper
  12. UserMapper.java

3.2 引入依赖

  1. <dependency>
  2. <groupId>com.baomidou</groupId>
  3. <artifactId>mybatis-plus-boot-starter</artifactId>
  4. <version>3.5.1</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>org.projectlombok</groupId>
  8. <artifactId>lombok</artifactId>
  9. </dependency>
  10. <dependency>
  11. <groupId>org.springframework.boot</groupId>
  12. <artifactId>spring-boot-starter-web</artifactId>
  13. </dependency>

3.3 在 application.yml 配置文件中添加 H2 的相关配置

  1. server:
  2. port: 8080 # 端口号
  3. spring:
  4. datasource:
  5. driver-class-name: org.h2.Driver # 驱动类
  6. url: jdbc:h2:tcp://localhost/~/test # JDBC URL
  7. username: sa # 用户名
  8. password: # 密码

3.4 添加 user.java 数据实体类

在包目录下新建 entity 目录,用来存放数据实体类,然后在 entity 目录下新建 User.java

  1. package com.example.mybatisplusdemo.entity;
  2. import com.baomidou.mybatisplus.annotation.TableField;
  3. import com.baomidou.mybatisplus.annotation.TableId;
  4. import com.baomidou.mybatisplus.annotation.TableName;
  5. import lombok.Data;
  6. /**
  7. * User 数据实体类
  8. * @author 云胡
  9. * @data 2022-04-18
  10. */
  11. @Data
  12. @TableName("user_test") //将对象和表进行关联
  13. public class User {
  14. @TableId("id")
  15. private Long id;
  16. @TableField("name")
  17. private String name;
  18. @TableField("age")
  19. private Integer age;
  20. @TableField("email")
  21. private String email;
  22. }

@Datalombok.jar包下的注解,之后就不需要写出 setget 方法。

@TableName实现实体类和数据库中的表两者之间的映射。

@TableId是主键字段的注解。

@TableField是非主键字段注解。

3.5 编写 UserMapper.java 接口

在包目录底下新建一个 mapper 目录,用来存放数据访问类,然后新建 UserMapper.java 文件。

  1. package com.example.mybatisplusdemo.mapper;
  2. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  3. import com.example.mybatisplusdemo.entity.User;
  4. import org.apache.ibatis.annotations.Mapper;
  5. /**
  6. * UserMapper 数据访问接口
  7. * @author 云胡
  8. * @data 2022-04-18
  9. */
  10. @Mapper
  11. public interface UserMapper extends BaseMapper<User> {
  12. }

@Mapper用在接口类上,后续才可以被 controller类使用。

3.6 编写 UserController.java 类

在包目录底下新建一个controller 目录,用来存放控制类,然后新建一个 UserController.java文件。

  1. package com.example.mybatisplusdemo.controller;
  2. import com.example.mybatisplusdemo.entity.User;
  3. import com.example.mybatisplusdemo.mapper.UserMapper;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RestController;
  7. import java.util.List;
  8. /**
  9. * User 控制类
  10. * @author 云胡
  11. * @data 2022-04-18
  12. */
  13. @RestController
  14. public class UserController {
  15. @Autowired
  16. private UserMapper userMapper;
  17. @GetMapping("/showUser")
  18. public List<User> showUser(){
  19. List<User> list = userMapper.selectList(null);
  20. System.out.println(list);
  21. return list;
  22. }
  23. }

3.7 结果

运行程序后,打开浏览器输入链接: localhost:8080/showUser可以看到控制台打印了以下数据:

[User(id=1, name=Jone, age=18, email=yunhu1@gmail.com), User(id=2, name=Jack, age=20, email=yunhu2@gmail.com), User(id=3, name=Tom, age=28, email=yunhu3@gmail.com), User(id=4, name=Sandy, age=21, email=yunhu4@gmail.com), User(id=5, name=Billie, age=24, email=yunhu5@gmail.com)]

网页上显示了:
image.png
我这边装了 Web 前端助手 FeHelper,所以看到的表的数据被自动格式化了。