当前位置: 首页 > news >正文

MybatisPlus—快速入门

目录

1.使用MybatisPlus的基本步骤

1.1引入MybatisPlus的起步依赖

1.2 定义Mapper

2.MybatisPlus常用注解 

2.1 @TableName

2.2 @TableId

2.3 @TableField

2.4 小结 

3. 常用配置

4. 总结


1.使用MybatisPlus的基本步骤

1.1引入MybatisPlus的起步依赖

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

MybatisPlus的starter:

<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.3.1</version>
</dependency>

1.2 定义Mapper

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

//在<>中填入需要进行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 单根据需要添加配置

相关文章:

  • Ribbon相关问题及答案(2024)
  • k8s之flink的几种创建方式
  • ASP.NET Core中实现个人资料上传图片功能
  • 嵌入式Linux C语言介绍
  • 测试分类篇
  • 微服务-理论(CAP,一致性协议)
  • opencv期末练习题(3)附带解析
  • Spring之AOP
  • 25计算机专业考研经验贴之准备篇
  • SpringCloud系列篇:核心组件之注册中心组件
  • 大津法(OTSU)点云强度信息分割
  • 安装jupyter notebook,jupyter notebook的简单使用
  • 橘子学K8S03之容器的理解
  • Android aar打包集成问题处理合集
  • 2023年12 月电子学会Python等级考试试卷(四级)答案解析
  • (三)从jvm层面了解线程的启动和停止
  • chrome扩展demo1-小时钟
  • HashMap剖析之内部结构
  • HTTP--网络协议分层,http历史(二)
  • iOS帅气加载动画、通知视图、红包助手、引导页、导航栏、朋友圈、小游戏等效果源码...
  • JavaScript标准库系列——Math对象和Date对象(二)
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • node-glob通配符
  • passportjs 源码分析
  • PAT A1050
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • XML已死 ?
  • 对象管理器(defineProperty)学习笔记
  • 关于字符编码你应该知道的事情
  • 好的网址,关于.net 4.0 ,vs 2010
  • 欢迎参加第二届中国游戏开发者大会
  • 前端临床手札——文件上传
  • 强力优化Rancher k8s中国区的使用体验
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何选择开源的机器学习框架?
  • 详解移动APP与web APP的区别
  • 携程小程序初体验
  • 用jQuery怎么做到前后端分离
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • #HarmonyOS:Web组件的使用
  • #QT(串口助手-界面)
  • $.ajax中的eval及dataType
  • (Forward) Music Player: From UI Proposal to Code
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)linux使用docker容器运行mysql
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)c++ std::pair 与 std::make
  • (转)Sublime Text3配置Lua运行环境
  • (轉貼) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球 [照片花絮] (SOC) (News)
  • (状压dp)uva 10817 Headmaster's Headache
  • ..thread“main“ com.fasterxml.jackson.databind.JsonMappingException: Jackson version is too old 2.3.1