2分钟带你快速了解什么是MyBatisPlus及其核心功能!

本文介绍了MyBatisPlus的基础使用,包括如何添加依赖、定义Mapper、常见注解的使用、配置项以及其强大的条件构造器、自定义SQL和IService接口的实战应用。
摘要由CSDN通过智能技术生成

e4d6942a60aa967864bcde2855472e12.gif

喜欢就点击上方关注我们吧!

7f4438188f25452216741b9dbc91214c.png

哈喽,大家好呀!这里是码农后端。本篇将带你快速了解什么是MyBatisPlus及其核心功能!

7eccc6aeb6fd8f4711b530dcecfbdca8.jpeg

一、MP入门

MyBatisPlus(MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发提高效率。

官网:https://baomidou.com/

1、使用步骤

1.1 引入依赖

引入MyBatisPlus依赖,代替MyBatis依赖。

MyBatisPlus官方提供了starter,集成了Mybatis和MybatisPlus的所有功能,实现了自动装配效果。

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.5.2</version>
        </dependency>
1.2 定义Mapper

定义Mapper接口并继承BaseMapper。

public interface UserMapper extends BaseMapper<User> {
}

注:需指定泛型为实体类的类型

BaseMapper本身提供了很多增删改查的功能,可以直接拿来使用(先继承,再调用)。

9cb1e3ab2825f558d6d6f612adf97b86.jpeg

2、常见注解

1)MyBatisPlus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。

7a0de27f55dc0ecc1a1cc08c229c8860.jpeg

2)当实体类不符合上述约定时,MybatisPlus中提供了以下几个常用注解

@TableName: 用来指定表名

@Tableld: 用来指定表中的主键字段信息

@TableField: 用来指定表中的普通字段信息

fa044456999dc40e7a1c76ea59d7f3b2.jpeg

2.1)ldType枚举的常见类型:

1、AUTO: 自增长 

2、INPUT: 通过set方法自行输入 

3、ASSIGN_ID: 分配 ID,接口ldentifierGenerator的方法nextld来生成id默认实现类为DefaultldentifierGenerator雪花算法

2.2)使用@TableField的常见场景∶

1、成员变量名与数据库字段名不一致 

2、成员变量名以is开头,且是布尔值 

3、成员变量名与数据库关键字冲突(如order),需加转义字符 

4、成员变量不是数据库字段

3、常见配置

MyBatisPlus的配置项继承了MyBatis原生配置和一些自己特有的配置,可根据需要自行在application.yml配置文件配置相关项。

a2ea9af5410cad9725b6069d47a595a5.jpeg

二、核心功能

1、条件构造器

1)MyBatisPlus支持各种复杂的where条件,可满足日常开发的所有需求。

b3b7cee96be0fddd26ad941c2b3467bf.jpeg

2)涉及到where条件部分时,使用条件构造器Querywrapper的示例代码如下:

31a53f9cf6ee659181c985a0c2895b58.png

3)LambdaQuerywrapper:使用Lambda表达式,传对应的get函数,防止硬编码问题。如下为两种方式的对比。

36d9c71e5635a2032b419191f8b43b55.png

4)条件构造器用法总结

1.Querywrapper和 LambdaQuerywrapper通常用来构建select、delete、update的where条件部分

2.UpdateWrapper和 LambdaUpdateWrapper通常只有在set语句比较特殊才使用。

3.尽量使用 LambdaQueryWrapper和 LambdaUpdateWrapper,避免硬编码

2、自定义SQL

可以使用MyBatisPlus的Wrapper来构建复杂的where条件,然后自己定义SQL语句中剩下的部分。步骤如下:

当SQL语句的where条件之外的部分,没有办法利用MP更方便地实现时(非常规,只能拼接,违背了企业开发规范),使用自定义SQL。

d12c513402f4141684559d1e8556129b.png

3、IService接口

1)自带的常见方法如下:

11027a7c4207152651ec90a7508eccfb.jpeg

2)相关的继承和实现关系如下图:

55fea0905bebc4901616f3d30d5b5cdb.png

3)代码示例 

自定义Service接口(如IUserService)继承IService接口

public interface IUserService extends IService<User>{
}

注:需要指定对应实体类的泛型。

自定义Service实现类(如UserServiceImpl),实现自定义接口并继承Servicelmpl类

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements IUserService{
}

注:需要指定两个泛型:对应Mapper和对应实体类的泛型。

3.1 IService的Lambda查询

1)需求:实现一个根据复杂条件查询用户的接口,查询条件如下

name: 用户名关键字,可以为空 

status: 用户状态,可以为空

minBalance: 最小余额,可以为空

maxBalance: 最大余额,可以为空

2)回顾使用MyBatis的SQL写法

07fce6a7cd6c7d1be926cc4ed5e2666c.jpeg

3)使用MyBatisPlus

c72479645091faf299cbcd6da1bf5167.png

3.2 lService的Lambda更新

1)需求:改造根据id修改用户余额的接口,要求如下 

a、完成对用户状态校验 

b、完成对用户余额校验 

c、如果扣减后余额为0,则将用户status修改为冻结状态(2)

2)对应的代码如下

5279a06766b6898a3eefbd17eb11a17d.png

3.3 IService批量新增

1)需求:批量插入10万条用户数据,并作出对比

2)相关的批处理方案对比

a.普通for循环插入

速度非常慢﹐不推荐

b.IService的批量插入

MP的批量新增,基于预编译的批处理,性能还算不错

c.开启rewriteBatchedStatements=true参数

配置jdbc参数,开 rewriteBatchedStatements,性能最好

好了,以上就是今天这篇文章的全部内容了,欢迎关注分享收藏点赞,我们下期再见!

f46d9b162fe5e9000deccd95335a5bf1.gif

喜欢就点击上方关注我们吧!

5e93e9bc563712d5a7921c523b87903f.png

往期推荐

如何注册一个自己的域名?如何创建阿里云ECS云服务器?

常见的密码加密方式有哪些?2分钟带你快速了解!

什么是RESTful?相关的注解有哪些?

什么是Spring Security?具有哪些功能?

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码农后端

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值