- 一、初始化数据库(基于 HeidiSQL)
- 1.1 创建数据库
- 1.2创建数据表
- 1.3 初始化数据
- 二、初始化项目(基于Spring Boot)
- 2.1 创建项目
- 2.2 新增依赖
- 2.3 数据库配置
- 2.4 配置 MyBatis Plus
- 2.5 创建实体类
- 2.6 创建Mapper层接口
- 2.7 创建Server层接口
- 2.8 创建Server层接口实现
- 2.9 创建 Controller 控制器类
- 三、测试项目(基于浏览器)
- 3.1 运行项目
- 3.2 测试查询接口
- 3.3 测试新增接口
- 3.4 测试编辑接口
- 3.5 测试删除接口
- 四、总结
一、初始化数据库(基于 HeidiSQL)
1.1 创建数据库
在 MyBatisPlus 快速入门体验之前,请同学们运行 HeidiSQL。
运行后,输入您电脑本地 MySQL 的配置,点击打开,界面如下图所示。
如果您没有安装HeidiSQL,可以进入 HeidiSQL 官网 进行下载安装,MySQL同理。
请同学们新建一个数据库:mybatisplus
,界面如下所示。
创建完成后,界面如下图所示。
1.2创建数据表
首先请同学们创建用户表 user
,创建的 SQL 命令如下。
CREATE TABLE `user` (
`name` VARCHAR(50) NULL DEFAULT NULL,
`age` INT(10) NULL DEFAULT NULL,
`address` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(50) NULL DEFAULT NULL
) ENGINE=InnoDB;
1.3 初始化数据
用户表 user
表创建完成后,接下来需要初始化
5
5
5 条用户的数据,SQL 命令如下。
INSERT INTO `user` (`name`, `age`, `address`, `mobile`) VALUES ('张三', 18, '测试地址1', '13600000001');
INSERT INTO `user` (`name`, `age`, `address`, `mobile`) VALUES ('李四', 19, '测试地址2', '13600000002');
INSERT INTO `user` (`name`, `age`, `address`, `mobile`) VALUES ('王五', 20, '测试地址3', '13600000003');
INSERT INTO `user` (`name`, `age`, `address`, `mobile`) VALUES ('赵六', 21, '测试地址4', '13600000004');
INSERT INTO `user` (`name`, `age`, `address`, `mobile`) VALUES ('郑七', 22, '测试地址5', '13600000005');
数据新增后,可以在 数据
页签查询用户数据,如下图所示。
提示:同学们也可以通过
SELECT * FROM user;
命令进行查询。
二、初始化项目(基于Spring Boot)
2.1 创建项目
请同学们运行 IntelliJ IDEA,点击新建项目,界面如下图所示。
请同学们输入项目名称 mybatisplus
,选择合适的项目路径,勾选 Maven 的打包方式,点击下一步,界面如下图所示。
继续点击创建按钮,即可完成项目创建,如下图所示。
项目创建完成后,如下图所示。
请同学们删除不必要的文件,只留下 src 和 pom.xml,如下图所示。
提示:鼠标单击选中文件后,点击 Delete 键即可删除。
2.2 新增依赖
请同学在 pom.xml 文件中,新增 3 3 3 个依赖,如下图所示。
- mysql-connector-java:用于连接 MySQL 数据库
- lombok:用于实体类的 get 和 set 方法生成
- mybatis-plus-boot-starter:mybatisplus 依赖
具体的依赖 XML 代码如下所示。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.30</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.16</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
同学们在 pom.xml 中更新完依赖后,需要按下图所示刷新 Maven,触发重新拉取依赖。
2.3 数据库配置
请同学们在 application.properties
文件中添加对数据库的配置,命令如下。
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mybatisplus?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=123456
提示:如果是 mysql5.7 及以下版本,驱动字段请填写
com.mysql.jdbc.Driver
2.4 配置 MyBatis Plus
请同学们在 cn.zwz.mybatisplus
包下创建 config
包,用于存放mybatisplus 的配置文件。
接着在 cn.zwz.mybatisplus.config
包下创建 MybatisPlusConfig.java
配置类,代码如下。
package cn.zwz.mybatisplus.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* @author 郑为中
* CSDN: Designer 小郑
*/
@Configuration
@MapperScan({"cn.zwz.mybatisplus.mapper"})
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
2.5 创建实体类
根据
1.2
1.2
1.2 节的 SQL 代码,创建 cn.zwz.mybatisplus.entity
包,再在包内创建 User 类,代码如下。
CREATE TABLE
user
(
name
VARCHAR(50) NULL DEFAULT NULL,
age
INT(10) NULL DEFAULT NULL,
address
VARCHAR(50) NULL DEFAULT NULL,
mobile
VARCHAR(50) NULL DEFAULT NULL
) ENGINE=InnoDB;
package cn.zwz.mybatisplus.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
private String id;
private String name;
private Integer age;
private String address;
private String mobile;
}
其中 name
、age
、address
、mobile
四个字段和 SQL 命令中的列名称一一对应,id
是持久化到数据库所必备的字段。
@Data
注解用于自动生成 get
和 set
方法。
@AllArgsConstructor
注解用于自动生成全参构造,即等同于:
public User(String id, String name, Integer age, String address, String mobile) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
this.mobile = mobile;
}
@NoArgsConstructor
注解用于自动生成无参构造,即等同于:
public User() {
}
2.6 创建Mapper层接口
请同学们创建 cn.zwz.mybatisplus.mapper
包,再在包内创建 UserMapper
接口,代码如下。
package cn.zwz.mybatisplus.mapper;
import cn.zwz.mybatisplus.entity.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
}
此 Mapper 数据链路层接口无需实现任何方法,只需继承 Mybatis Plus 提供的 BaseMapper
接口即可。
同学们可以点开 BaseMapper
查询源码,发现此类已经提供了基础的增删改查接口。
2.7 创建Server层接口
请同学们创建 cn.zwz.mybatisplus.service
包,再在包内创建 IUserService
接口,代码如下。
package cn.zwz.mybatisplus.service;
import cn.zwz.mybatisplus.entity.User;
import com.baomidou.mybatisplus.extension.service.IService;
public interface IUserService extends IService<User> {
}
此 Service 服务层接口无需实现任何方法,只需继承 Mybatis Plus 提供的 IService
接口即可。
同学们可以点开 IService
查询源码,发现此类已经提供了基础的增删改查接口。
2.8 创建Server层接口实现
请同学们创建 cn.zwz.mybatisplus.serviceimpl
包,再在包内创建 IUserServiceImpl
接口实现类,代码如下。
package cn.zwz.mybatisplus.serviceimpl;
import cn.zwz.mybatisplus.entity.User;
import cn.zwz.mybatisplus.mapper.UserMapper;
import cn.zwz.mybatisplus.service.IUserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@Service
@Transactional
public class IUserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
}
此实现类无需手动编写任何方法,只需继承 Mybatis Plus 提供的 ServiceImpl
类即可,并实现 IUserService
接口即可。
2.9 创建 Controller 控制器类
前面的 8 个小节,只是为了完成前期准备工作,在 2.9 小节就开始正式投入使用了。
请同学们创建 cn.zwz.mybatisplus.controller
包,在其中创建 UserController
类,代码如下所示。
package cn.zwz.mybatisplus.controller;
import cn.zwz.mybatisplus.entity.User;
import cn.zwz.mybatisplus.service.IUserService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/user")
@Transactional
public class UserController {
@Autowired
private IUserService iUserService;
@RequestMapping(value = "/getAll", method = RequestMethod.GET)
public List<User> getAll(){
return iUserService.list();
}
@RequestMapping(value = "/add", method = RequestMethod.GET)
public String add(@RequestParam String name,@RequestParam Integer age,@RequestParam String address,@RequestParam String mobile){
iUserService.saveOrUpdate(new User(new User(UUID.randomUUID().toString(),name,age,address,mobile));
return "学生添加成功!";
}
@RequestMapping(value = "/edit", method = RequestMethod.GET)
public String edit(@RequestParam String name,@RequestParam Integer age,@RequestParam String address,@RequestParam String mobile){
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("name",name);
List<User> userList = iUserService.list(qw);
for (User user : userList) {
user.setAge(age);
user.setAddress(address);
user.setMobile(mobile);
iUserService.saveOrUpdate(user);
}
return "编辑成功" + userList.size() + "位学生";
}
@RequestMapping(value = "/delete", method = RequestMethod.GET)
public String delete(@RequestParam String name){
QueryWrapper<User> qw = new QueryWrapper<>();
qw.eq("name",name);
Long userCount = iUserService.count(qw);
if(userCount > 0) {
iUserService.remove(qw);
}
return "删除成功" + userCount + "位学生";
}
}
在 UserController
类中,实现了基础的增删改查方法,供前端调用。
三、测试项目(基于浏览器)
3.1 运行项目
请同学们找到主启动类 MybatisplusApplication
,点击绿色三角形,运行项目。
运行完成后,终端如下图所示。
提示:若您启动报错,请首先排查依赖版本是否一致,因为 SpringBoot 3.x 版本和低版本的 Mybatis Plus 不兼容,其次再检查包名是否拼写错误。
3.2 测试查询接口
请同学们在浏览器输入:
http://localhost:8080/user/getAll
输出如下:
[{"name":"张三","age":18,"address":"测试地址1","mobile":"13600000001"},{"name":"李四","age":19,"address":"测试地址2","mobile":"13600000002"},{"name":"王五","age":20,"address":"测试地址3","mobile":"13600000003"},{"name":"赵六","age":21,"address":"测试地址4","mobile":"13600000004"},{"name":"郑七","age":22,"address":"测试地址5","mobile":"13600000005"}]
项目已将数据库中的数据查询到,并返回给前端,测试完成。
3.3 测试新增接口
请同学们在浏览器输入:
http://localhost:8080/user/add?name=11111&age=11&address=11111&mobile=13611111111
输出如下:
学生添加成功!
请同学们再次在浏览器输入:
http://localhost:8080/user/getAll
[{"id":null,"name":"张三","age":18,"address":"测试地址1","mobile":"13600000001"},{"id":null,"name":"李四","age":19,"address":"测试地址2","mobile":"13600000002"},{"id":null,"name":"王五","age":20,"address":"测试地址3","mobile":"13600000003"},{"id":null,"name":"赵六","age":21,"address":"测试地址4","mobile":"13600000004"},{"id":null,"name":"郑七","age":22,"address":"测试地址5","mobile":"13600000005"},{"id":"e082f6f4-9052-45bb-9671-2a52f0a5eebb","name":"11111","age":11,"address":"11111","mobile":"13611111111"}]
发现数据添加完成,测试完毕。
3.4 测试编辑接口
请同学们在浏览器输入:
http://localhost:8080/user/add?name=11111&age=22&address=22222&mobile=13622222222
输出如下:
编辑成功1位学生
请同学们再次在浏览器输入:
http://localhost:8080/user/getAll
[{"id":null,"name":"张三","age":18,"address":"测试地址1","mobile":"13600000001"},{"id":null,"name":"李四","age":19,"address":"测试地址2","mobile":"13600000002"},{"id":null,"name":"王五","age":20,"address":"测试地址3","mobile":"13600000003"},{"id":null,"name":"赵六","age":21,"address":"测试地址4","mobile":"13600000004"},{"id":null,"name":"郑七","age":22,"address":"测试地址5","mobile":"13600000005"},{"id":"e082f6f4-9052-45bb-9671-2a52f0a5eebb","name":"11111","age":22,"address":"22222","mobile":"13622222222"}]
发现指定数据编辑完成,测试完毕。
3.5 测试删除接口
请同学们在浏览器输入:
http://localhost:8080/user/add?name=11111&age=22&address=22222&mobile=13622222222
输出如下:
删除成功1位学生
请同学们再次在浏览器输入:
http://localhost:8080/user/getAll
[{"id":null,"name":"张三","age":18,"address":"测试地址1","mobile":"13600000001"},{"id":null,"name":"李四","age":19,"address":"测试地址2","mobile":"13600000002"},{"id":null,"name":"王五","age":20,"address":"测试地址3","mobile":"13600000003"},{"id":null,"name":"赵六","age":21,"address":"测试地址4","mobile":"13600000004"},{"id":null,"name":"郑七","age":22,"address":"测试地址5","mobile":"13600000005"}]
发现指定数据删除完成,测试完毕。
四、总结
以上就是 MyBatisPlus 的快速入门体验,可以发现开发者可以无需编写 SQL 代码,即可快速实现简单的增删改查功能,非常方便。
当然 MyBatisPlus 还有更强大的功能,支持日常开发中 99% 的数据库读写需求,会在后面的章节中继续讲解。