Mybatis Plus 快速开始
大家好,我是小哈。
前面小节 中,我们已经了解到什么是 Mybatis Plus, 以及和 Mybatis 的区别。本章节中,我们将上手学习如何使用它操作数据库。
一、数据库安装
本教程以 MySQL 数据库作为演示,所以第一步,你需要先确保你的机器已安装好 MySQL 。不知道如何安装的童鞋,可自行百度一下。
TIP : 也可以使用 Docker 安装 MySQL 环境,可参考小哈之前的一篇文章:《Docker 安装 MySQL 环境》
二、新建测试库与表
MySQL 安装成功后,新建一个名为 test
的测试数据库,并创建一张用户表,Schema 建表脚本如下:
DROP TABLE IF EXISTS t_user;
CREATE TABLE `t_user` ( `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '主键ID', `name` varchar(30) NOT NULL DEFAULT '' COMMENT '姓名', `age` int(11) NULL DEFAULT NULL COMMENT '年龄', `gender` tinyint(2) NOT NULL DEFAULT 0 COMMENT '性别,0:女 1:男', PRIMARY KEY (`id`) ) COMMENT = '用户表';
三、新建 Spring Boot 示例项目
数据库准备好了,我们来新建一个 Spring Boot 示例项目,用来讲解如何使用 Mybatis Plus,先放一张示例项目目录结构截图:
TIP : 不懂 Spring Boot 的童鞋,可以参考小哈之前发布的文章:《Spring Boot 入门教程》 。
注意 :
全新的
MyBatis-Plus
3.0 版本基于 JDK8,提供了lambda
形式的调用,所以安装集成 Mybatis-Plus 3.0 要求如下:
- JDK 8+;
- Maven or Gradle, 本文以 maven 作为版本管理工具;
四、添加 Mybatis Plus 依赖
在 pom.xml
文件中添加以下依赖:
<dependency>
<groupId>com.baomidougroupId> <artifactId>mybatis-plus-boot-starterartifactId> <version>3.5.1version> dependency> <dependency> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-starter-testartifactId> <scope>testscope> dependency> <dependency> <groupId>org.projectlombokgroupId> <artifactId>lombokartifactId> <version>1.16.10version> dependency> <dependency> <groupId>mysqlgroupId> <artifactId>mysql-connector-javaartifactId> dependency>
PS: 小哈在写此教程的时候,MyBatis-Plus 的最新版本为
3.5.1
。
警告: 引入
MyBatis-Plus
之后请不要再次引入MyBatis
以及MyBatis-Spring
,以避免因版本差异导致的问题。
五、添加配置
接下来,在 applicaiton.yml
配置文件中添加 MySQL 数据库的相关配置(数据库驱动、连接、用户名和密码):
# 数据库配置
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8 username: root password: xxxx
然后,在项目根目录下新建一个 config
包,并创建 MybatisPlusConfig
配置类:
/**
* @Author: 犬小哈
* @From: 公众号:小哈学Java, 网站:www.quanxiaoha.com
* @Date: 2022-12-15 18:29
* @Version: v1.0.0
* @Description: TODO
**/
@Configuration
@MapperScan("com.quanxiaoha.mybatisplusdemo.mapper")
public class MybatisPlusConfig {
}
TIP :
@MapperScan
注解用于告诉 Mybatis Plus 框架需要扫描的mapper
类的包路径,mapper
类主要用于操作数据库,学习过 Mybatis 的童鞋应该都非常清楚,这里提一嘴是防止可能会有些没学过 Mybatis 的小伙伴。
六、添加实体类
前面已经建好了用户表,下面编写用户表对应的数据库实体类 User.java
:
@Data
@Builder
@TableName("t_user")
public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; private Integer gender; }
@TableName("t_user")
注解用于指定表名;@TableId(type = IdType.AUTO)
注解指定了字段id
为表的主键,同时指定主键为自增类型。
TIP:
@Data
和@Builder
是 Lombok 注解,偷懒用的,加上它即可编译自动生成getXXX/setXXX
等相关方法,不了解的小伙伴可自行搜索一下如何使用。
七、添加 Mapper 类
在项目根目录下创建 mapper
包,并新建 UserMapper
接口,同时继承自 BaseMapper
, 代码如下:
public interface UserMapper extends BaseMapper<User> { }
BaseMapper
接口由 Mybatis Plus 提供,封装了一些常用的 CRUD 操作,使得我们无需像 Mybatis 那样编写 xml
文件,就拥有了基本的 CRUD 功能,点击 BaseMapper
接口,源码如下:
public interface BaseMapper<T> extends Mapper<T> { // 新增数据 int insert(T entity); // 根据 ID 删除 int deleteById(Serializable id); // 删除数据 int deleteByMap(@Param("cm") Map columnMap); // 删除数据 int delete(@Param("ew") Wrapper queryWrapper); // 根据 ID 批量删除数据 int deleteBatchIds(@Param("coll") Collection extends Serializable> idList); // 根据 ID 更新 int updateById(@Param("et") T entity); // 更新数据 int update(@Param("et") T entity, @Param("ew") Wrapper updateWrapper); // 根据 ID 查询 T selectById(Serializable id); // 根据 ID 批量查询 List selectBatchIds(@Param("coll") Collection extends Serializable> idList); // 查询数据 List selectByMap(@Param("cm") Map columnMap); // 查询一条数据 T selectOne(@Param("ew") Wrapper queryWrapper); // 查询记录总数 Integer selectCount(@Param("ew") Wrapper queryWrapper); // 查询多条数据 List selectList(@Param("ew") Wrapper queryWrapper); // 查询多条数据 List
可以先简单看一眼,有个印象就行,后续章节中将学习如何使用它们。
八、简单的 CRUD
在单元测试包下,创建一个测试类 MybatisPlusBaseMapperTests
,编写几个 CURD 的测试方法,测试代码如下:
@SpringBootTest
class MybatisPlusBaseMapperTests {
@Autowired private UserMapper userMapper; /** * 查询数据 */ @Test public void testSelectUser() { System.out.println(("----- 开始测试 mybatis-plus 查询数据 ------")); // selectList() 方法的参数为 mybatis-plus 内置的条件封装器 Wrapper,这里不填写表示无任何条件,全量查询 List userList = userMapper.selectList(null); userList.forEach(System.out::println); } /** * 新增一条数据 */ @Test public void testInsertUser() { System.out.println(("----- 开始测试 mybatis-plus 插入数据 ------")); User user = User.builder() .name("犬小哈教程 www.quanxiaoha.com") .age(30) .gender(1) .build(); userMapper.insert(user); } /** * 删除数据 */ @Test public void testDeleteUser() { System.out.println(("----- 开始测试 mybatis-plus 删除数据 ------")); // 根据主键删除记录 userMapper.deleteById(1); // 根据主键批量删除记录 userMapper.deleteBatchIds(Arrays.asList(1, 2)); } /** * 更新数据 */ @Test public void testUpdateUser() { System.out.println(("----- 开始测试 mybatis-plus 更新数据 ------")); User user = User.builder() .id(1L) .name("犬小哈教程 www.quanxiaoha.com") .build(); userMapper.updateById(user); } }
九、结语
本小节中,我们学习了 Spring Boot 中如何快速整合集成 Mybatis-Plus, 同时在本地搭建了一个 MySQL 环境,演示了如何通过 Mybatis-Plus 实现了基本的增删改查操作。