返回

Mybatis-Plus常用注解大全:全面解读,效率翻倍!

后端

了解 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 语句,非常灵活。