Mybatis Plus 常用注解(超详细)

大家好。
本文主要带大家来看下 Mybatis Plus 框架中,使用频率非常高的几个注解及其属性值,因为编写此本教程目的是为了大家快速入门并使用 Mybatis Plus,关于注解更高级的用法请参考官网。
实体类常用注解
@TableName
作用:表名注解,标识实体类对应的表。
使用示例:
/**
* @author: 张三
* @date: 2022-12-13 14:13
* @version: v1.0.0
* @description: TODO
**/
@TableName("t_user")
public class User {
/**
* 主键 ID
*/
private Long id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 性别
*/
private Integer gender;
}
有没有什么法子可以不用添加 @TableName 注解,让框架自动解析映射?
主要有以下两种方法:
-
当表名和实体类的命名一致时,如表名
user, 实体类为User时,可不用添加@TableName注解,Mybatis Plus 会自动完成映射,不过实际项目中,表名规范规定都会带有前缀。 -
还可以通过全局配置声明表明前缀,比如你的项目里,表名规范全部以
t_开头,则可以在application.yml配置文件中添加如下配置,这样就可以不用添加@TableName注解,MP 会自动拼接:
mybatis-plus:
global-config:
db-config:
table-prefix: t_
@TableId
作用:主键注解。
使用示例:
/**
* @author: 张三
* @date: 2022-12-13 14:13
* @version: v1.0.0
* @description: TODO
**/
@TableName("t_user")
public class User {
/**
* 主键 ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 性别
*/
private Integer gender;
}
@TableId 注解有两个属性值:
属性
类型
必须指定
默认值
描述
value
String
否
""
主键字段名
type
Enum
否
IdType.NONE (默认雪花算法生成 ID)
指定主键类型
@IdType
作用:指定主键 ID 类型。
值
描述
AUTO
数据库 ID 自增
NONE
未设置主键类型(默认)
INPUT
插入数据前,需自行设置主键的值
ASSIGN_ID
分配 ID(主键类型为 Number(Long 和 Integer)或 String)(since 3.3.0),使用接口IdentifierGenerator的方法nextId(默认实现类为DefaultIdentifierGenerator雪花算法)
ASSIGN_UUID
分配 UUID,主键类型为 String(since 3.3.0),使用接口IdentifierGenerator的方法nextUUID (默认 default 方法)
~~ID_WORKER~~
分布式全局唯一 ID 长整型类型 (推荐使用 ASSIGN_ID)
~~UUID~~
32 位 UUID 字符串 (推荐使用 ASSIGN_UUID)
~~ID_WORKER_STR~~
分布式全局唯一 ID 字符串类型 (推荐使用 ASSIGN_ID)
@TableField
作用:指定数据库字段注解(非主键)。
假设表的字段名与实体类的字段名不一致,可通过它来指定,比如表字段名为 user_name 映射到实体类的字段 name 上,代码如下:
/**
* @author: 张三
* @date: 2022-12-13 14:13
* @version: v1.0.0
* @description: TODO
**/
@TableName("t_user")
public class User {
/**
* 主键 ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 姓名
*/
@TableField("user_name")
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 性别
*/
private Integer gender;
}
@TableLogic
作用:逻辑删除注解。
@TableName("t_user")
public class User {
/**
* 主键 ID
*/
@TableId(value = "id", type = IdType.AUTO)
private Long id;
/**
* 姓名
*/
private String name;
/**
* 年龄
*/
private Integer age;
/**
* 性别
*/
private Integer gender;
/**
* 逻辑删除
*/
@TableLogic
private Integer isDeleted;
}
具体如何使用,请参阅后续《逻辑删除》 小节,有详细教程。
@Version
作用:乐观锁注解。
@TableName("t_seckill_goods")
public class SeckillGoods {
/**
* 主键 ID
*/
@TableId(type = IdType.AUTO)
private Long id;
/**
* 商品名称
*/
private String goodsName;
/**
* 库存
*/
private Integer count;
/**
* 乐观锁版本号
*/
@Version
private Integer version;
}
具体如何使用,请参阅后续《乐观锁》 小节,有详细教程。
结语
本文带着大家快速了解了项目开发中常用的一些实体类注解,希望对小伙伴们有所帮助。