Mybatis-Plus常用注解大全:全面解读,效率翻倍!
2023-05-02 07:34:05
了解 Mybatis-Plus 注解:增强实体类映射和查询
在使用 Mybatis-Plus 时,注解是一个强大的工具,可以简化实体类与数据库表的映射,并增强查询能力。本文将深入探讨 Mybatis-Plus 提供的各种注解,从基础到高级,全面解析其用法和优势。
基础注解:
1. @Table:指定表名
@Table 注解用于指定实体类对应的数据库表名,如果实体类名与表名一致,则可以省略此注解。
2. @Id:指定主键
@Id 注解用于指定实体类的主键字段,主键字段必须是唯一且非空的。
3. @Column:指定字段名
@Column 注解用于指定实体类字段对应的数据库字段名,如果实体类字段名与数据库字段名一致,则可以省略此注解。
4. @GeneratedValue:指定主键生成策略
@GeneratedValue 注解用于指定主键的生成策略,常用的主键生成策略包括自增、UUID、雪花算法等。
5. @Transient:忽略字段
@Transient 注解用于忽略实体类字段,被 @Transient 注解的字段不会映射到数据库中。
6. @Version:乐观锁
@Version 注解用于实现乐观锁,当更新数据时,会检查版本号是否一致,如果不一致,则更新失败。
高级注解:
7. @CreationTime:自动填充创建时间
@CreationTime 注解用于自动填充实体类创建时间,该字段的值由框架自动生成,不需要手动赋值。
8. @UpdateTime:自动填充更新时间
@UpdateTime 注解用于自动填充实体类更新时间,该字段的值由框架自动生成,不需要手动赋值。
9. @TableLogic:逻辑删除
@TableLogic 注解用于实现逻辑删除,当删除数据时,不会真正从数据库中删除,而是将该字段的值设置为一个特定的值,例如 1 表示已删除,0 表示未删除。
10. @TypeHandler:类型处理器
@TypeHandler 注解用于指定字段的类型处理器,类型处理器可以将 Java 类型和数据库类型进行转换。
11. @Sql:自定义方法
@Sql 注解用于自定义方法,自定义方法可以直接执行 SQL 语句,非常灵活。
12. @Ignore:忽略字段
@Ignore 注解用于忽略字段,被 @Ignore 注解的字段不会被 Mybatis-Plus 映射。
13. @Param:参数映射
@Param 注解用于将参数映射到 SQL 语句中,参数映射可以防止 SQL 注入。
14. @Result:结果映射
@Result 注解用于将数据库字段映射到 Java 字段,@Result 注解可以指定字段名、列名、类型处理器等。
15. @ConstructorArgs:构造函数参数映射
@ConstructorArgs 注解用于将数据库字段映射到构造函数的参数,@ConstructorArgs 注解可以指定参数名、列名、类型处理器等。
16. @Discriminator:鉴别器
@Discriminator 注解用于指定鉴别器字段,鉴别器字段用于区分不同的子类。
17. @Cacheable:缓存
@Cacheable 注解用于将方法结果缓存起来,下次调用相同方法时,直接从缓存中获取结果,提高查询效率。
18. @CacheEvict:清除缓存
@CacheEvict 注解用于清除缓存,当更新或删除数据时,可以使用 @CacheEvict 注解清除相关缓存。
19. @CachePut:更新缓存
@CachePut 注解用于更新缓存,当更新或插入数据时,可以使用 @CachePut 注解更新相关缓存。
20. @SelectKey:主键回填
@SelectKey 注解用于将主键回填到实体类中,主键回填可以确保实体类的主键字段值与数据库中的一致。
代码示例:
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "user_name")
private String name;
@Column(name = "age")
private Integer age;
}
常见问题解答:
1. 如何指定表名前缀?
可以使用配置文件中的 global-config.table-prefix
属性来指定表名前缀。
2. 如何实现乐观锁?
可以使用 @Version
注解来实现乐观锁,在更新数据时,会检查版本号是否一致,如果不一致,则更新失败。
3. 如何忽略某个字段?
可以使用 @Transient
注解来忽略某个字段,被 @Transient
注解的字段不会映射到数据库中。
4. 如何进行逻辑删除?
可以使用 @TableLogic
注解来实现逻辑删除,当删除数据时,不会真正从数据库中删除,而是将该字段的值设置为一个特定的值,例如 1 表示已删除,0 表示未删除。
5. 如何自定义方法?
可以使用 @Sql
注解来自定义方法,自定义方法可以直接执行 SQL 语句,非常灵活。