spring boot集成mybatis-plus——Mybatis Plus 快速开始

Mybatis Plus 快速开始

 更新时间 2023-01-10 15:36:57

大家好,我是小哈。

前面小节 中,我们已经了解到什么是 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 入门教程》 

spring boot集成mybatis-plus——Mybatis Plus 快速开始_第1张图片Spring Boot 整合 mybatis-plus 项目结构

注意 :

全新的 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 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 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> selectMaps(@Param("ew") Wrapper queryWrapper); // 查询多条数据 List selectObjs(@Param("ew") Wrapper queryWrapper); // 分页查询 > E selectPage(E page, @Param("ew") Wrapper queryWrapper); // 分页查询 >> E selectMapsPage(E page, @Param("ew") Wrapper queryWrapper); }  
    

可以先简单看一眼,有个印象就行,后续章节中将学习如何使用它们。

八、简单的 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 实现了基本的增删改查操作。

你可能感兴趣的:(mybatis,spring,boot,java,mysql,数据库)