MyBatis Plus 入门,一篇搞定!


一、简介

  • MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发提高效率而生
  • 官网:https://baomidou.com/
    在这里插入图片描述

特点

  • 无侵入:只做增强不做改变,不会对现有工程产生影响
  • 强大的 CRUD 操作:内置通用 Mapper,少量配置即可实现单表CRUD 操作
  • 支持 Lambda:编写查询条件无需担心字段写错
  • 支持主键自动生成
  • 内置分页插件
    ……

使用方式

  • 单独使用 MyBatis-Plus
  • 基于 Spring 使用 MyBatis-Plus
  • 基于 SpringBoot 使用 MyBatis-Plus
+++ MyBatis Plus 起步依赖 +++
<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.4.3</version>
</dependency>

MyBatis Plus 是基于 MyBatis 所拓展的框架,所以起步依赖里面会自动引入 MyBatis 依赖

在这里插入图片描述


二、环境搭建

1、搭建流程

  1. 创建maven工程,并配置相关基础信息
  2. 配置pom文件
  3. 配置数据源(application.yml)
  4. 编写 SpringBoot 启动类
  5. 创建实体类与表结构(类名与表名对应,属性名与字段名对应)
  6. 定义Mapper接口,继承 BaseMapper

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2、开启MyBatis Plus 操作日志(可选)

开启输出日志后,可以更方便的在控制台查看所执行 SQL 语句

+++ yaml配置 +++
+++ 开启 MyBatis-Plus日志,并输出到控制台 +++
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

3、MyBatis Plus 常用方法介绍

学习 Mybatis Plus,主要就是需要学习 BaseMapper 接口中的方法,开发过程中会经常使用到这些方法来操作数据库

在这里插入图片描述


三、CRUD接口(增删改查)

别忘记将 UserMapper 自动注入进来

在这里插入图片描述

1、新增操作

1)insert 方法

在这里插入图片描述

使用 MyBatis Plus 所提供的 insert 方法,有以下特点:

  • 插入数据时,若没有设置主键id,则会自动生成主键id

2)示例

在这里插入图片描述

2、删除操作

1)deleteById 和 deleteBatchIds 方法

在这里插入图片描述

方法返回值:被删除的记录数

2)示例

在这里插入图片描述

3、修改操作

1)updateById 方法

在这里插入图片描述

方法返回值:被修改的记录数

2)示例

在这里插入图片描述

4、查询操作

1)selectById 方法 和 selectBatchIds 方法

在这里插入图片描述

2)selectPage 方法

在这里插入图片描述
在这里插入图片描述

selectPage 方法需要配置分页拦截器才能实现分页查询功能
参数 queryWrapper 是一个条件构造器

3)示例

在这里插入图片描述
在这里插入图片描述


四、MyBatis-Plus 知识点

MP = MyBatis Plus

1、MP 是如何知道要操作 user 表的?

答:当我们使用MP框架时,需要自定义一个接口去继承 BaseMapper 类,在继承 BaseMapper 类时需要指定一个泛型,泛型需要指定与数据库表建立映射关系的实体类。

我们写的是 User 类,所以MP就会去操作数据库的 user 表。

在这里插入图片描述
在这里插入图片描述

2、如果将 user 表改名为 t_user 还能正常操作吗?

答:会报错,user表不存在
在这里插入图片描述

3、如果将 user 表中的 password 字段改名为 pwd,还能正常操作吗?

答:会报错,字段列表中找不到 password 字段
在这里插入图片描述


五、常用注解

1、TableName 注解

  • 名称:@TableName
  • 类型:类注解
  • 位置:模型类上
  • 作用:设置当前实体类与指定表建立映射
    在这里插入图片描述

如果满足自动映射条件,可以省略@TableName注解,条件如下

  • 实体类名和表名一致
  • 如果实体类名使用驼峰命名法命名,表名使用对应的下划线分隔命名

在这里插入图片描述

2、TableField 注解

  • 名称:@TableField
  • 类型:属性注解
  • 位置:模型类属性上
  • 作用:设置当前属性与指定表的字段建立映射
  • 相关属性
    – value:设置当前属性与表中映射的字段名
    – exist:设置当前属性是否跟表中字段有映射关系,默认为true

如果实现自动映射条件,可以省略@TableField注解,条件如下

  • 属性名和字段名一致

在这里插入图片描述

3、TableId 注解

  • 名称:@TableId
  • 类型:属性注解
  • 位置:模型类中用于表示主键的属性上
  • 作用:设置当前属性与指定表的主键字段建立映射,设置主键的生成策略
  • 相关属性
    – value:设置表中要映射的主键字段名称,
    – type:设置主键的生成策略

主键生成策略

  • AUTO(0):使用数据库id自增策略控制id生成(需要在数据库开启主键自增功能才会生效)
  • NONE(1):不设置id生成策略
  • INPUT(2):用户手动输入id
  • ASSIGN_ID(3)(常用):雪花算法生成id(可兼容数值型与字符串型)
  • ASSIGN_UUID(4):以UUID生成算法作为id生成策略

注意

  • 雪花算法(SnowFlake):是Twitter公司推出的专门针对分布式ID的解决方案
  • 结构:符号位+时间戳+工作进程位+序列号位,一个64bit的整数,8字节,正好为一个long类型数据

在这里插入图片描述

全局配置主键自增策略

在这里插入图片描述


六、条件构造器

1、简介

通过条件构造器(Wrapper),可以控制最终生成的 SQL 语句的条件部分。
在这里插入图片描述
在这里插入图片描述

2、QueryWrapper

通过 QueryWrapper 条件构造器,可以控制最终生成的查询类的SQL语句。

结构:select _____ from table_name where _____ order by _____

作用:例如 selectList 方法 和 selectPage 方法需要传入 QueryWrapper 来做查询条件
在这里插入图片描述
示例
在这里插入图片描述

3、LambdaQueryWrapper

通过 LambdaQueryWrapper 条件构造器,可以控制最终生成的查询类的SQL语句。

理解为使用了 Lambda 表达式的 QueryWrapper 条件构造器

示例

一些方法可以传入 condition 参数,类似于动态SQL中的 if 语句,根据 布尔表达式 条件判断是否执行
比如下方的 like 方法,当 name 不为空,才会执行 like 进行模糊查询

在这里插入图片描述

4、UpdateWrapper

通过 UpdateWrapper 条件构造器,可以控制最终生成的更新类的SQL语句。

结构:update table_name set _____ where _____

示例
方式一:通过传入实体对象来修改数据
在这里插入图片描述
方式二:通过set方法来修改数据
在这里插入图片描述

5、LambdaUpdateWrapper

通过 LambdaUpdateWrapper 条件构造器,可以控制最终生成的更新类的SQL语句。

理解为使用了 Lambda 表达式的 QueryWrapper 条件构造器

示例
在这里插入图片描述

6、链式编程风格

在使用条件构造器进行条件构造时,可以使用链式编程风格,如下:

在这里插入图片描述


七、MyBatis 与 MyBatis Plus 问题思考

1、MyBatis 与 MyBatis Plus 共用

  • MyBatis Plus 依赖包含了 MyBatis 依赖
  • MyBatis Plus 只适合单表的增删改查,更复杂的SQL操作就用MyBatis

MyBatis Plus 和 MyBatis 共用是很常见的事情
MP 只是对 mybatis 框架进行增强,不会改变 mybatis 框架的使用方法。也就是说原来怎么使用 mybatis 的,现在还可以按照原来的方式使用即可

在这里插入图片描述

2、在 MyBatis 中使用 MyBatis Plus 框架提供的条件构造器

为了进一步增强 mybatis 的功能,我们还可以在 Mapper 中声明方法时,方法的参数使用MP提供的Wrapper条件构造器对象,如下:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


八、逻辑删除

1、逻辑删除与物理删除的概念

删除数据库中的数据,可以通过物理删除,也可以通过逻辑删除。

  • 物理删除:指的是直接将数据从数据库中删除
  • 逻辑删除:指的是修改数据的某个字段,使其表示为已删除状态
    在这里插入图片描述

对于重要的、后期可能需要恢复的数据,可以考虑使用逻辑删除

2、逻辑删除操作步骤

配置完逻辑删除后,使用 MP 的 delete 语句删除数据,会变成 update 语句

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


九、MP 简化 Service 层

1、介绍

MP 框架除了可以简化持久层代码开发,还为 Service 层提供了业务接口和实现类,可以简化 Service 层的开发。

在这里插入图片描述

2、操作步骤

  1. 业务接口继承 MP 提供的 IService 接口
  2. 业务实现类继承 MP 提供的 ServiceImpl 类

目录结构
在这里插入图片描述

Service
在这里插入图片描述

ServiceImpl
在这里插入图片描述

测试类
在这里插入图片描述


十、代码生成器 MyBatis X 插件 (扩展)

1、在IDEA中安装

MybatisX 是一款基于 IDEA 的快速开发插件,为效率而生。
安装方法:打开 IDEA,进入 File -> Settings -> Plugins -> Browse Repositories,输入 mybatisx 搜索并安装。

在这里插入图片描述

2、操作步骤

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

生成结果

目录结构:
在这里插入图片描述

实体类 domain:
在这里插入图片描述

持久层 mapper:
在这里插入图片描述

业务层 Service
在这里插入图片描述

  • 21
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值