MyBatis使用Mapper.XML文件来进行数据表映射。有resultMap、sql、insert、update、delete和select等元素。其中resultMap用于描述如何从数据库结果集中加载对象。
MyBatis-Plus可以使用XML配置进行数据表映射,也可以使用注解来映射。
下面是注解方式详细介绍:
@TableName("数据库的表名"):用于指定实体类对应的数据库表名。
//举例
@TableName("table_user")
public class User {
// ...
}
@TableId("主键名"):用于指定实体类中的某个属性作为数据库表的主键。
@TableId(value = "id", type = IdType.AUTO):自增
@TableId(value = "id", type = IdType.ID_WORKER_STR):分布式全局唯一ID字符串类型
@TableId(value = "id", type = IdType.INPUT):自行输入
@TableId(value = "id", type = IdType.ID_WORKER):分布式全局唯一ID 长整型类型
@TableId(value = "id", type = IdType.UUID):32位UUID字符串
@TableId(value = "id", type = IdType.NONE):无状态
//举例
@TableId(value = "id", type = IdType.AUTO)
private Long id;
@TableField("字段名"):用于指定实体类中的某个属性与数据库表中的某个字段的对应关系。
@TableField(exist = false):表示该属性不为数据库表字段,但又是必须使用的。
@TableField(exist = true):表示该属性为数据库表字段。
@TableField(condition = SqlCondition.LIKE):表示该属性可以模糊搜索。
@TableField(fill = FieldFill.INSERT):注解填充字段 ,生成器策略部分也可以配置!
//举例
@TableField("username")
private String username;
@TableLogic:用于在执行删除操作时,启用或禁用级联删除功能。
//举例
@TableLogic(logicType = LogicType.KEEP)
private Boolean isDeleted;
@EnumValue: 用于将枚举类型属性映射到数据库表中的字符串类型字段。
//举例
public enum Gender {
MALE, FEMALE;
}
@TableField("gender")
@EnumValue(value = "name")
private Gender gender;
@Version:乐观锁注解、在使用乐观锁时,还需要在 MyBatis-Plus 的配置文件
中启用乐观锁插件,并配置乐观锁的策略。这样可以保证乐观锁功能的正确性。
//举例
@Version
private Integer version;
@JsonProperty: 用于实体类的属性上,作用是重命名属性,以便在反序列化时使用不同的名称。