mybatis plus注解
时间: 2025-04-01 18:21:08 浏览: 41
### MyBatis Plus 注解的功能及使用方法
#### 1. `@TableName` 注解
该注解用于指定实体类所映射的数据库表名称。当实体类名与数据库表名不一致时,可以通过此注解来定义具体的表名[^3]。
例如,在以下代码中,`User` 类被绑定到名为 `user` 的数据库表上:
```java
@TableName("user")
public class User {
private Long id;
// 省略其他字段和 getter/setter 方法
}
```
---
#### 2. `@TableId` 注解
`@TableId` 主要用于标记实体类中的主键字段,并可以设置主键策略。如果未显式声明,则默认采用自增模式(`AUTO`)。以下是常见的主键策略选项及其含义:
- **`IDENTITY`**: 数据库自增主键。
- **`INPUT`**: 手动输入主键值。
- **`NONE`**: 不处理主键逻辑。
- **`ASSIGN_ID`**: 自动生成分布式唯一 ID (UUID 或雪花算法)。
示例代码如下:
```java
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.IdType;
public class Order {
@TableId(type = IdType.ASSIGN_ID)
private Long orderId; // 自动生成分布式唯一 ID
// 省略其他字段和 getter/setter 方法
}
```
上述代码表明 `orderId` 字段为主键,并通过 `ASSIGN_ID` 方式生成唯一的主键值。
---
#### 3. 实体类属性与数据库字段一致性
为了确保 MyBatis-Plus 能够正常操作数据库,通常要求实体类中的属性名应与数据库表字段保持一致[^2]。如果不一致,可通过 `@TableField` 注解手动指定对应关系。
例如:
```java
@TableField("create_time")
private Date createTime; // 映射至 create_time 列
```
---
#### 4. 关系映射注解 (`@Many`, `@One`)
对于复杂的关系模型(如一对一、一对多),MyBatis-Plus 提供了相应的注解支持。这些注解主要用于实现关联查询。
##### (1)`@One` 注解
适用于一对一场景。它允许通过外键将两个对象连接起来。例如:
```java
@One(select = "com.example.mapper.AddressMapper.selectById")
private Address address; // 地址信息
```
此处表示当前对象会调用 `AddressMapper.selectById` 查询地址详情[^4]。
##### (2)`@Many` 注解
适用于一对多场景。它可以配合子查询或联合查询完成数据加载。例如:
```java
@Many(select = "com.example.mapper.OrderMapper.selectByUserId")
private List<Order> orders; // 用户订单列表
```
这表示基于某个条件动态获取用户的多个订单记录。
---
#### 5. 版本控制 (`@Version`) 和乐观锁机制
`@Version` 是 MyBatis-Plus 中的一个重要注解,用于实现乐观锁功能。每次更新数据前都会校验版本号是否匹配;若匹配则继续执行,否则抛出异常提示并发冲突。
示例:
```java
@Version
private Integer version; // 记录版本号
```
---
#### 6. 时间戳自动填充 (`@TableLogic`, `@TableField(fill=...)`)
某些业务需求可能涉及时间戳的自动化维护。为此,可借助 `fill` 属性完成创建时间和修改时间的自动注入。
示例:
```java
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime; // 插入时自动填充
@TableField(fill = FieldFill.UPDATE)
private LocalDateTime updateTime; // 更新时自动填充
```
此外,逻辑删除也是常见需求之一。通过 `@TableLogic` 可以轻松实现软删除效果:
```java
@TableLogic
private Integer deleted; // 默认值为0, 删除状态设为1
```
---
### 总结
以上介绍了 MyBatis-Plus 的核心注解以及其具体用途。合理运用这些注解能够显著提升开发效率并简化代码结构。需要注意的是,实际项目中还需结合实际情况调整配置参数以满足特定需求。
阅读全文
相关推荐


















