1093 字
约 3 分钟
1
Mybatis Plus 常用注解(超详细)
2026-09-18
Mybatis Plus 常用注解(超详细)
前言
大家好,我是小哈。
本文主要带大家来看下 Mybatis Plus 框架中,使用频率非常高的几个注解及其属性值,因为编写此本教程目的是为了大家快速入门并使用 Mybatis Plus,关于注解更高级的用法请参考官网。
实体类常用注解
@TableName
作用:表名注解,标识实体类对应的表。
使用示例:
/**
* @author: 犬小哈
* @from: 公众号:小哈学Java, 网站:www.quanxiaoha.com
* @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: 犬小哈
* @from: 公众号:小哈学Java, 网站:www.quanxiaoha.com
* @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: 犬小哈
* @from: 公众号:小哈学Java, 网站:www.quanxiaoha.com
* @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;
}
具体如何使用,请参阅后续《乐观锁》 小节,有详细教程。
结语
本文带着大家快速了解了项目开发中常用的一些实体类注解,希望对小伙伴们有所帮助。
Mybatis Plus 常用注解(超详细)
http://www.clxhxhhr.top/posts/1053/ 评论
0 条
还没有评论,先写一条吧。