MyBatis Plus 常用注解

MyBatis Plus 是一个基于 MyBatis 的增强工具,旨在简化开发过程,提高开发效率。它提供了许多实用的功能,如代码生成器、分页插件、条件构造器等,使得开发者可以更专注于业务逻辑的实现,而不必过多关注 MyBatis 的配置和 SQL 编写。

MyBatis Plus 常用注解

MyBatis Plus 提供了丰富的注解,用于简化实体类和数据库表之间的映射关系。以下是一些常用的注解:

1. @TableName

用于指定实体类对应的数据库表名。

import com.baomidou.mybatisplus.annotation.TableName;

@TableName("user")
public class User {
   
   
    // 字段和方法
}
2. @TableId

用于指定实体类的主键字段,并可以设置主键生成策略。

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;

public class User {
   
   
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    // 其他字段和方法
}
3. @TableField

用于指定实体类字段与数据库表字段的映射关系,可以设置字段的一些属性,如是否为数据库字段、字段填充策略等。

import com.baomidou.mybatisplus.annotation.TableField;

public class User {
   
   
    @TableField("user_name")
    private String name;
    // 其他字段和方法
}
4. @TableLogic

用于逻辑删除,标记一个字段用于逻辑删除,而不是物理删除。

import com.baomidou.mybatisplus.annotation.
### 3.1 MyBatis Plus 常用注解及其功能说明 MyBatis Plus 是对 MyBatis 的增强封装,通过提供一系列常用注解简化了数据库操作,使得开发者无需编写 XML 文件即可完成实体类与数据库表之间的映射和操作。 #### 3.1.1 `@TableName` 该注解用于标识实体类对应的数据库表名。在默认情况下,MyBatis Plus 会将实体类的类名转换为小写作为表名进行操作。如果实际表名与类名不一致,则需要使用 `@TableName` 明确指定对应的表名。例如,当实体类名为 `User` 而实际表名为 `t_user` 时,可以通过如下方式定义: ```java @TableName("t_user") public class User { // 实体类字段定义 } ``` 这一做法解决了默认表名与实际数据库表名不匹配的问题[^4]。 #### 3.1.2 `@TableId` `@TableId` 注解用于标识主键字段,并可以设置主键类型。MyBatis Plus 支持多种主键生成策略,例如自增、UUID、雪花算法等。以下是一个使用 `@TableId` 指定主键并采用自增策略的示例: ```java @TableId(value = "id", type = IdType.AUTO) private Long id; ``` 上述代码中,`value` 表示数据库表中的主键字段名,`type` 表示主键类型,其中 `IdType.AUTO` 表示由数据库自动增长生成主键值[^3]。 #### 3.1.3 `@TableField` `@TableField` 注解用于标识普通字段,支持多种配置选项,如是否为数据库字段、字段名映射、是否自动填充等。例如,若实体类字段名与数据库列名不一致,可以通过 `@TableField` 指定对应关系: ```java @TableField("user_name") private String name; ``` 此外,`@TableField` 还支持自动填充功能,适用于创建时间和更新时间等字段的自动管理[^1]。 #### 3.1.4 全局配置与默认前缀 为了进一步减少重复注解的使用,MyBatis Plus 提供了全局配置功能。例如,可以通过配置文件为所有表名设置默认前缀,避免在每个实体类上添加 `@TableName` 注解。以下是一个典型的全局配置示例: ```yaml mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl global-config: db-config: table-prefix: t_ ``` 该配置表示所有表名默认以 `t_` 开头,从而实现统一的命名规范[^3]。 #### 3.1.5 `@Version`(乐观锁注解) `@Version` 注解用于实现乐观锁机制,防止多线程并发修改数据导致的数据不一致问题。通常应用于高并发场景下的数据更新操作。例如: ```java @Version private Integer version; ``` 在更新数据时,MyBatis Plus 会自动检查版本号是否发生变化,若发生变化则抛出异常,阻止更新操作,确保数据一致性。 #### 3.1.6 `@LogicDelete`(逻辑删除注解) `@LogicDelete` 注解用于实现逻辑删除功能,即在删除数据时不真正从数据库中移除记录,而是通过一个状态字段标记为已删除。例如: ```java @LogicDelete private Integer deleted; ``` 通过该注解,查询操作会自动过滤掉被标记为删除的记录,提升数据安全性与可恢复性[^2]。 --- ### 3.2 使用案例与注意事项 以下是一个完整的实体类示例,展示了多个常用注解的综合应用: ```java @TableName("t_user") public class User { @TableId(value = "id", type = IdType.AUTO) private Long id; @TableField("user_name") private String name; @TableField("email") private String email; @Version private Integer version; @LogicDelete private Integer deleted; // Getter 和 Setter 方法 } ``` 在此示例中: - `@TableName` 指定了表名为 `t_user`; - `@TableId` 定义了主键字段及其映射; - `@TableField` 用于非主键字段的映射; - `@Version` 启用了乐观锁机制; - `@LogicDelete` 实现了逻辑删除功能。 在实际开发过程中,合理使用这些注解可以显著减少 SQL 编写工作量,提升开发效率[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

需要重新演唱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值