mybatis-plus的实体层注解

在 MyBatis-Plus 中,实体层的常见注解和引用主要用于简化数据库操作,特别是在 ORM 映射和 CRUD 操作中。以下是一些常见的注解和它们的功能:

1. 常见实体注解

1.@TableName

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

  • 使用场景:如果实体类的名称和数据库表的名称不一致,或者你希望明确指定数据库表名时,使用该注解。

@TableName("user")
public class User {
    // 属性和方法
}

2.@TableId

  • 作用:用于标记实体类中的主键字段。

  • 使用场景:用于标注实体类中的主键字段,可以指定主键的生成策略。

  • 常用的 IdType

    • AUTO: 自增

    • INPUT: 由用户输入

    • ID_WORKER: 雪花算法(默认)

    • UUID: 使用 UUID 生成

@TableId(type = IdType.AUTO)
private Long id;

3.@TableField

  • 作用:用于标记实体类中的字段,表示该字段与数据库表中的列进行映射。

  • 使用场景:如果实体类字段与数据库列名不一致,或者需要进行一些自定义处理时,使用该注解。

  • 常用属性

    • value: 表示数据库字段名

    • exist: 指定是否需要参与 SQL 操作(默认为 true,表示参与)

@TableField("user_name")  // 数据库列名为 user_name
private String name;

 4.@TableLogic

  • 作用:标记逻辑删除字段。当该字段的值等于指定值时,表示该数据已被逻辑删除。

  • 使用场景:用于实现逻辑删除功能,通常字段值为 0(未删除)和 1(已删除)

@TableLogic
private Integer deleted;

5.@Version

  • 作用:标记版本字段,用于实现乐观锁。

  • 使用场景:配合 @Version,MyBatis-Plus 会自动在更新操作时对比版本字段的值,以保证并发情况下数据的一致性。

@Version
private Integer version;

2. 其他常见引用注解

1.@SqlParser

  • 作用:用于指定 SQL 解析器,决定当前查询是否支持 SQL 注入等操作。

  • 使用场景:用于控制 SQL 解析器策略的定制。

@SqlParser(filter = true)  // 过滤SQL注入

2.@TableFieldselect 属性

  • 作用:指定是否参与查询操作。

  • 使用场景:当不希望某个字段参与查询时,可以设置 select = false

@TableField(select = false)
private String password;

 3.@TableFieldinsertupdate 属性

  • 作用:指定该字段是否在插入和更新操作中参与。

  • 使用场景:例如,某些字段只在插入时填充,而在更新时不变,可以通过该注解来控制。

@TableField(insert = false, update = false)
private Date createTime;

 4.@TableIdtype 属性

  • 作用:指定主键策略的类型。

  • 使用场景:当主键使用不同的生成策略时,使用 @TableId 来指定。

@TableId(type = IdType.UUID)  // 使用 UUID 作为主键
private String id;

 3. 示例代码

以下是一个简单的示例,演示了 MyBatis-Plus 中实体类的常见注解使用:

@Data
@TableName("user")  // 表示实体类对应的数据库表是 user
public class User {

    @TableId(type = IdType.AUTO)  // 主键自增
    private Long id;

    @TableField("user_name")  // 数据库列名为 user_name
    private String name;

    private Integer age;

    @TableField(select = false)  // 不参与查询操作
    private String password;

    @TableLogic  // 逻辑删除字段
    private Integer deleted;

    @Version  // 乐观锁版本号
    private Integer version;

    @TableField(fill = FieldFill.INSERT)  // 仅在插入时填充
    private Date createTime;
}

4. 总结

  • @TableName:指定实体类与数据库表的映射关系。

  • @TableId:指定主键字段。

  • @TableField:用于字段与数据库列的映射、控制字段的参与情况。

  • @TableLogic:标记逻辑删除字段。

  • @Version:标记乐观锁字段。

  • @SqlParser:控制 SQL 解析器。

  • insert, update, select 属性:控制字段是否参与插入、更新、查询操作。

这些注解帮助你更方便地进行 ORM 映射,简化了数据库操作,尤其是在 CRUD 操作中。

你可能感兴趣的:(mybatis,java,spring,数据库,mybatis-plus,orm)