一、Mybatis-Plus 概述
Mybatis-Plus 支持非常多的数据库,常规的有 MySQL,H2,SQLite,SQLServer 等等。
这边我将使用 H2 数据库做一次测试。
二、本地 H2 数据的配置
2.1 下载和配置 H2 数据库
H2数据库官网:www.h2database.com/html/main.h…
在本地用户目录底下新建一个文件 test.mv.d,test表示数据库名称,你可以自定义名称。
在本地H2 目录下找到 h2\bin\h2.bat文件,这个是 windows 控制台的启动脚本,双击运行,会启动 H2的 Web 控制台。
点击测试连接,如果测试成功,记下驱动类、JDBC URL、用户名和密码。
2.2 IDEA 连接 H2 数据库
先在 pom.xml中引入依赖
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<version>2.1.210</version>
<scope>runtime</scope>
</dependency>
在 IDEA 的数据库选项卡中新建「数据源」,选择 H2 数据源。
然后填入刚才的那些数据,最后测试一下连接。
2.3 新建表和插入数据
2.3.1 新建表
右键数据库点击「跳转到查询控制台」,输入创建表的命令:
create table user_test
(
id int primary key not null,
name varchar(30) null,
age int null,
email varchar(50) null
)
执行完毕,输入一下显示表的命令:
show tables
发现已经新建了表。
2.3.2 插入数据
输入插入的 sql 语句:
insert into user_test(id, name, age, email)
values
(1, 'Jone', 18, 'yunhu1@gmail.com'),
(2, 'Jack', 20, 'yunhu2@gmail.com'),
(3, 'Tom', 28, 'yunhu3@gmail.com'),
(4, 'Sandy', 21, 'yunhu4@gmail.com'),
(5, 'Billie', 24, 'yunhu5@gmail.com');
插入执行完毕后,执行查看表的命令:
select * from user_test
三、Mybatis-Plus 的配置
3.1 项目结构
├─main
│ ├─java
│ │ └─com
│ │ └─example
│ │ └─mybatisplusdemo
│ │ │ MybatisplusdemoApplication.java
│ │ │
│ │ ├─controller
│ │ │ UserController.java
│ │ │
│ │ ├─entity
│ │ │ User.java
│ │ │
│ │ └─mapper
│ │ UserMapper.java
3.2 引入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
3.3 在 application.yml 配置文件中添加 H2 的相关配置
server:
port: 8080 # 端口号
spring:
datasource:
driver-class-name: org.h2.Driver # 驱动类
url: jdbc:h2:tcp://localhost/~/test # JDBC URL
username: sa # 用户名
password: # 密码
3.4 添加 user.java 数据实体类
在包目录下新建 entity 目录,用来存放数据实体类,然后在 entity 目录下新建 User.java。
package com.example.mybatisplusdemo.entity;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* User 数据实体类
* @author 云胡
* @date 2022-04-18
*/
@Data
@TableName("user_test") //将对象和表进行关联
public class User {
@TableId("id")
private Long id;
@TableField("name")
private String name;
@TableField("age")
private Integer age;
@TableField("email")
private String email;
}
@Data是 lombok.jar包下的注解,之后就不需要写出 set 和 get 方法。
@TableName实现实体类和数据库中的表两者之间的映射。
@TableId是主键字段的注解。
@TableField是非主键字段注解。
3.5 编写 UserMapper.java 接口
在包目录底下新建一个 mapper 目录,用来存放数据访问类,然后新建 UserMapper.java 文件。
package com.example.mybatisplusdemo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplusdemo.entity.User;
import org.apache.ibatis.annotations.Mapper;
/**
* UserMapper 数据访问接口
* @author 云胡
* @data 2022-04-18
*/
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
@Mapper用在接口类上,后续才可以被 controller类使用。
3.6 编写 UserController.java 类
在包目录底下新建一个controller 目录,用来存放控制类,然后新建一个 UserController.java文件。
package com.example.mybatisplusdemo.controller;
import com.example.mybatisplusdemo.entity.User;
import com.example.mybatisplusdemo.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
/**
* User 控制类
* @author 云胡
* @date 2022-04-18
*/
@RestController
public class UserController {
@Autowired
private UserMapper userMapper;
@GetMapping("/showUser")
public List<User> showUser(){
List<User> list = userMapper.selectList(null);
System.out.println(list);
return list;
}
}
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)]
网页上显示了:
我这边装了 Web 前端助手 FeHelper,所以看到的表的数据被自动格式化了。