MyBatis-Plus

文章目录

一、MyBatis-Plus入门

  大家在日常开发中应该能发现,单表的CRUD功能代码重复度很高,也没有什么难度。而这部分代码量往往比较大,开发起来比较费时。因此,目前企业中都会使用一些组件来简化或省略单表 的CRUD开发工作。目前在国内使用较多的一个组件就是MyBatis-Plus。MyBatis-Plus不仅仅可以简化单表操作,而且还对Mybatis的功能有很多的增强。可以让我们的开发更加的简单,高效。MyBatis-Plus和Mybatis是协作关系。

MyBatis-Plus官网地址

1.1、快速开始

1.引入依赖。MyBatis-Plus提供了starter,实现了自动Mybatis以及MyBatis-Plus的自动装配功能。

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

2.定义Mapper。

为了简化单表CRUD ,MyBatis-Plus提供了一个基础的BaseMapper接口,其中已经实现了单表的CRUD:

因此我们自定义的Mapper只要实现了这个 BaseMapper ,就无需自己实现单表CRUD了。定义一个User类,对应一张数据表。

让UserMapper接口继承BaseMapper,然后可以编写代码实现单表的CRUD。实际上就是利用MyBatis-Plus省去了以前需要频繁编写的mapper语句。

1.2、常见注解

  在刚刚的入门案例中,我们仅仅引入了依赖,继承了BaseMapper就能使用MyBatis-Plus,非常简单。但是问题来了,MyBatis-Plus如何知道我们要查询的是哪张表?表中有哪些字段呢?UserMapper在继承BaseMapper的时候指定了一个泛型,泛型中的User就是与数据库对应的PO。MyBatis-Plus通过扫描实体类,并基于反射获取实体类信息作为数据库表信息,从而生成SQL的。默认情况下:

  • MyBatis-Plus会把PO实体的类名驼峰转下划线作为表名。
  • MyBatis-Plus会把PO实体的所有变量名驼峰转下划线作为表的字段名,并根据变量类型推断字段类型。
  • MyBatis-Plus会把名为id的字段作为主键。

但很多情况下,默认的实现与实际场景不符,因此MyBatis-Plus提供了一些注解便于我们声明表信息。

1.2.1、@TableName

  • 描述:表名注解,标识实体类对应的表
  • 使用位置:实体类

1.2.2、@TableId

  • 描述:主键注解,标识实体类中的主键字段
  • 使用位置:实体类的主键字段

比较常见的type有三种,对应主键id的生成策略:

  • AUTO:利用数据库的id自增长
  • INPUT:手动生成id
  • ASSIGN_ID:雪花算法生成Long类型的全局唯一id,这是默认的ID策略

1.2.3、@TableField

  • 描述:普通字段注解

一般情况下我们并不需要给字段添加@TableField注解,一些特殊情况除外:

  • 成员变量名与数据库字段名不一致
  • 成员变量是以isXXX命名,按照JavaBean的规范,MyBatis-Plus识别字段时会把is去除,这就导致与数据库不符。
  • 成员变量名与数据库一致,但是与数据库的关键字冲突。使用@TableField注解给字段名添加转义字符:``
  • 成员变量不是数据库字段

除了上面介绍的三个常用配置,其他配置可以看官网:

1.3、常见配置

  MyBatis-Plus 提供了丰富的配置选项,以满足不同用户的需求。这些配置中,一部分继承自 MyBatis 原生支持的配置,另一部分则是 MyBatis-Plus 特有的扩展配置。

二、核心功能

刚才的案例中都是以id为条件的简单CRUD,一些复杂条件的SQL语句就要用到一些更高级的功能了。

2.1、条件构造器

相关推荐
豆角焖肉1 天前
MyBatis-Plus 从入门到 CRUD 实战:Spring Boot 整合
mybatis-plus
大漠孤烟s2 天前
4.Mybatis学习-动态sql、缓存、逆向工程
mybatis
毕业设计7033 天前
(免费领源码) SpringBoot 游戏交易平台17600-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
java·spring boot·mysql·决策树·mybatis·idea·推荐算法
程序员JerrySUN4 天前
Jetson Edge AI 实战01:Nano、Xavier、Orin 怎么选?Jetson 硬件选型详解【视频讲解】
java·数据库·redis·安全·mybatis
linmengmeng_13144 天前
【总结】MyBatis-Plus批量插入与清表的正确姿势
java·spring boot·mysql·mybatis
vx_BS813304 天前
【项目编号:project51381】Spring Boot 婚纱摄影管理系统:套餐预约、在线咨询、支付与客片展示的一站式业务实现
java·spring boot·eclipse·tomcat·mybatis
jaysee-sjc5 天前
【苍穹外卖】Day01:从零认识企业级项目开发
java·开发语言·数据库·mysql·spring·intellij-idea·mybatis
程序猿乐锅5 天前
【黑马点评 | 第二篇】Redis 缓存更新策略与商铺缓存实现
java·网络·redis·spring·mybatis
萧瑟余晖5 天前
MyBatis 核心原理详解
架构·mybatis
MZA6665 天前
实战:基于 XXL-JOB + 策略模式 + Nacos 配置化的 CSV 导出任务系统设计
java·spring boot·mybatis