MybatisPlus—快速入门

目录

1.使用MybatisPlus的基本步骤

1.1引入MybatisPlus的起步依赖

[1.2 定义Mapper](#1.2 定义Mapper)

2.MybatisPlus常用注解

[2.1 @TableName](#2.1 @TableName)

[2.2 @TableId](#2.2 @TableId)

[2.3 @TableField](#2.3 @TableField)

[2.4 小结](#2.4 小结)

[3. 常用配置](#3. 常用配置)

[4. 总结](#4. 总结)


1.使用MybatisPlus的基本步骤

1.1引入MybatisPlus的起步依赖

MyBatisPlus官方提供了starter,其中集成了Mybatis和MybatisPlus的所有功能,并且实现了自动装配效果。因此我们可以用MybatisPlus的starter替换Mybatis的starter。(如果不替换,同时添加两个依赖会报错)

MybatisPlus的starter:

java 复制代码
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

1.2 定义Mapper

将自定义的Mapper继承MybatisPlus提供的BaseMapper接口:

java 复制代码
//在<>中填入需要进行CRUD的实体类型
public interface UserMapper extends BaseMapper<User> { }

通过继承接口,可以使用 BaseMapper 中大量现有的方法,而不需要我们自己编写,方便快捷。


2.MybatisPlus常用注解

思考1: MybatisPlus是怎么通过传入的实体类类型,自动找到数据库对应的表,并且对其进行CRUD的操作呢?
答1: MybatisPlus会通过MP约定,寻找数据库中对应的表。

约定1.类名驼峰转下划线作为表名

约定2.名为id的字段作为主键

约定3.变量名驼峰转下划线作为表的字段名
思考2: 如果自己使用的表名或属性名不符合MP约定,应该怎么做才能让MybatisPlus识别到?
**答2:**使用注解
**注意:**一定要让MybatisPlus知道哪个属性代表id字段,否则无法进行CRUD,会导致报错;

2.1 @TableName

**作用:**用来指定表名

2.2 @TableId

**作用:**用来指定表中的关键字段(id)信息

可以通过设置type的值来选择合适的id策略:

idType.AUTO:数据库自增加;

idType.INPUT:通过set方法自行输入;

idType.ASSIGN _ID(默认选择):自动分配 ID,接口ldentifierGenerator的方法nextld来生成id默认实现类为DefaultldentifierGenerator雪花算法。

2.3 @TableField

**作用:**用来指定表中的普通字段信息

常用场景:

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

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

3.成员变量名与数据库关键字冲突

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

2.4 小结

MybatisPlus是如何获取实现CRUD的数据库表信息的?

1.默认以类名驼峰转下划线作为表名

2.默认把名为id的字段作为主键

3.默认把变量名驼峰转下划线作为表的字段名

MybatisPlus的常用注解有哪些?

1.@TableName: 指定表名称及全局配置

2.@Tableld: 指定id字段及相关配置

3.@TableField: 指定普通字段及相关配置

ldType的常见类型有哪些?

AUTO、ASSIGN ID、INPUT

使用@TableField的常见场景是?

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

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

3.成员变量名与数据库关键字冲突

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


3. 常用配置

具体可参考官方文档:MybatisPlus使用配置


4. 总结

MyBatisPlus使用的基本流程

1.引入起步依赖

2.自定义Mapper继承BaseMapper

3.在实体类上添加注解声明表信息

4.在application.yml 单根据需要添加配置

相关推荐
Zhao-Jichao2 小时前
AI Prompting for Everyone 课程笔记 - P21 总结 Conclusion
人工智能·笔记
欢欢李2 小时前
【LTE L3 笔记 05】LTE同步信号
笔记·无线通信·物理层·lte·空口协议
La Pulga4 小时前
【FreeRTOS源码学习笔记】空闲任务与阻塞延时
笔记·mcu·学习·嵌入式·freertos·实时操作系统
蒸蒸yyyyzwd4 小时前
秋招学习笔记 day106
笔记·学习
小李不想当小白5 小时前
WDG看门狗(STM32标准库学习笔记)
笔记·stm32·单片机·嵌入式硬件·学习·嵌入式
欢欢李5 小时前
【LTE L3 笔记 04】LTE帧结构
笔记·无线通信·物理层·lte·空口协议
Zhao-Jichao8 小时前
AI Prompting for Everyone 课程笔记 - P20 实验与期末项目 Lab and Final Project
前端·人工智能·笔记
lisw058 小时前
作为人类代理的大语言模型及其角色分类!
人工智能·学习·语言模型
Z21-X8 小时前
云原生运维实战笔记:企业网站综合上云部署与云运维服务全景解析
运维·笔记·学习·云原生
坤坤子吖8 小时前
Linux网络编程:UDP进阶,从字典服务器到简单聊天室
linux·服务器·网络·c++·笔记·学习