Mybatis-Plus

MyBatis-Plus (baomidou.com)

MyBatis-Plus 是基于 MyBatis 的增强工具,提供了便捷的 CRUD 操作、条件构造器、分页查询、自动填充、乐观锁、逻辑删除等功能,极大地简化了 MyBatis 的开发流程,提高了开发效率。

快速入门mybatisplus

1.引入mybatis-plus的起步依赖代替mybatis

1
2
3
4
5
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-spring-boot3-starter</artifactId>
<version>3.5.5</version>
</dependency>

mybatis-plus官方提供了starter,集成了mybatis和plus的所有功能,并且实现了自动装配的效果

2.自定义的mapper接口,继承mybatisplus提供的BaseMapper接口,并且指定泛型

3.直接注入mapper对象,用对象.调用父类BaseMapper中的方法,免去我们以前在mybatis中写SQL的步骤了

实现原理

1
public interface UserMapper extends BaseMapper<User>

mp通过扫描实体类,并基于反射作为实体类的信息作为数据库的信息表

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
@Data
public class User {

private Long id;

private String username;

private String password;

private String phone;

private String info;

private Integer status;

private Integer balance;

private LocalDateTime createTime;

private LocalDateTime updateTime;
}
  • 类名驼峰转下划线作为表名称
  • 名为id的字段作为表的主键
  • 变量名驼峰转下换线作为表的字段名称

常见注解

mybatis中的常见注解如下:

  • @TableName:用来指定表名称
  • @TableId:用来指定表中主键字段的信息
  • @TableField:用来指定表中普通字段的信息

解释如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
@TableName("tb_user")
public class users {
@TableId(value = "id",type = IdType.AUTO)
private int id;

@TableField("username")
private String name;
@TableField("is_married")
private boolean isMarried;
@TableField("`order`")
private Integer order;
@TableField(exist = false)
private String address;
}

这些注解用于映射 Java 对象与数据库表之间的关系,具体解释如下:

  1. @TableName("tb_user"): 用于指定该实体类对应的数据库表名为 “tb_user”。
  2. @TableId(value = "id", type = IdType.AUTO): 标注在实体类的主键字段上,用于指定主键属性,value 指定数据库表中对应的列名为 “id”,type 指定主键生成策略为自动增长。
  3. @TableField("username"): 用于指定实体类属性与数据库表字段之间的映射关系,value 指定数据库表中对应的列名为 “username”。
  4. @TableField("is_married"): 用于指定实体类属性与数据库表字段之间的映射关系,value 指定数据库表中对应的列名为 “is_married”,通常用于 boolean 类型的属性。
  5. @TableField("order"): 用于指定实体类属性与数据库表字段之间的映射关系,由于 “order” 是 SQL 关键字,所以使用了 “`” 来包裹列名。
  6. @TableField(exist = false): 标注在实体类的非数据库字段上,表示该属性在数据库表中不存在,即不与数据库表字段进行映射。

这些注解可以帮助 MyBatis-Plus 框架自动生成 SQL 语句,并实现对象与数据库表之间的映射关系,简化了持久层操作的开发。

image-20240402231304865

常见配置

mybatis-plus:
type-aliases-package: com.itheima.mp.domain.po # 别名扫描包
* mapper-locations: **”classpath*:/mapper/*/*.xml”
# Mapper.xml文件地址,默认值*
* configuration:
map-underscore-to-camel-case: true # *是否开启下划线和驼峰的映射
* cache-enabled: false # 是否开启二级缓存

global-config:
db-config:
id-type: assign_id # id雪花算法生成*
* update-strategy: not_null # 更新策略:只更新非空字段

去官网查看

使用配置 | MyBatis-Plus (baomidou.com)

总结

MybatisPlus使用的基本流程

  • 引入起步依赖
  • 自定义mapper基础BaseMapper
  • (约定大于配置,遵从约定上述)
  • 在实体类上,添加注解声明,表示信息
  • 在.yaml中根据需要添加配置