前言: 日常开发中应该能发现,单表的CRUD功能代码重复度很高,也没有什么难度。而这部分代码量往往比较大,开发起来比较费时。目前在国内使用较多的一个组件就是MybatisPlus,来快捷的进行单表操作

官网 https://www.baomidou.com/
在这里插入图片描述

使用方法

1 引入mp依赖

MybatisPlus提供了starter,实现了自动Mybatis以及MybatisPlus的自动装配功能,坐标如下:

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

该依赖包含mybatis和mybatisplus,所以使用MybatisPlus依赖代替(包含关系)mybatis的stater

2 定义Mapper接口并继承来自mp的BaseMapper

MybatisPlus提供了一个基础的BaseMapper接口,其中已经实现了单表的CRUD( 认爸爸 )
在这里插入图片描述
BaseMapper泛型写操作的单表在项目里面的实例对象
使用时当成自己写的方法即可

 userMapper.insert(user);
 userMapper.updateById(user);
 userMapper.deleteById(5L);
 userMapper.selectBatchIds(List.of(1L, 2L, 3L, 4L));

常见注解

在刚刚的入门案例中,我们仅仅引入了依赖,继承了BaseMapper就能使用MybatisPlus,非常简单。但是问题来了:
MybatisPlus如何知道我们要查询的是哪张表?表中有哪些字段呢?

大家回忆一下,UserMapper在继承BaseMapper的时候指定了一个泛型:在这里插入图片描述
泛型中的User就是与数据库对应的PO.

MybatisPlus就是根据PO实体的信息来推断出表的信息,从而生成SQL的。默认情况下:

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

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

@TableName

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

属性:value=“表名”

@TableId

  • 描述:主键注解,标识实体类中的主键字段
  • 使用位置:实体类的主键字段
    在这里插入图片描述
    在这里插入图片描述

@TableField

  • 描述:普通字段注解
    该注解用于标记实体类中的非主键字段,它告诉 MyBatis-Plus 如何映射实体类字段到数据库表字段。如果你的实体类字段名遵循驼峰命名规则,并且与数据库表字段名一致,你可以省略这个注解。在这里插入图片描述
    在这里插入图片描述
    这里的`` 是反引号在这里插入图片描述
    属性:
    在这里插入图片描述

常用配置

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

大多数的配置都有默认值,因此我们都无需配置。但还有一些是没有默认值的,例如:

  • 实体类的别名扫描包
  • 全局id类型
mybatis-plus:
  type-aliases-package: com.itheima.mp.domain.po
  global-config:
    db-config:
      id-type: auto # 全局id类型为自增长

需要注意的是,MyBatisPlus也支持手写SQL的,而mapper文件的读取地址可以自己配置:

mybatis-plus:
  mapper-locations: "classpath*:/mapper/**/*.xml" # Mapper.xml文件地址,当前这个是默认值。

可以看到默认值是classpath*:/mapper/**/*.xml,也就是说我们只要把mapper.xml文件放置这个目录下就一定会被加载。就可以使用XML里面的mapper

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐