原理

“约定大于配置“
MP通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。

  1. 类名驼峰转下划线作为表名
  2. 名为id的字段作为主键
  3. 变量名驼峰转下划线作为标的字段名

常见注解

MP比较常用的几个注解如下:

  1. @TableName: 用来指定表名
  2. @TableId: 用来指定表的主键字段信息
  3. @TableField: 用来指定表中的普通字段信息
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("user")
@ToString
public class User extends Model<User> {
    @TableId(value="AUTO_ID", type = IdType.AUTO)
    private Integer autoId;

    private String userName;

    private String password;
}

IdType枚举

  1. AUTO:数据库自增长
  2. INPUT:通过set方法自行输入
  3. ASSIGN_ID: 分配ID·接口identifierGenerator的方法nextId来生成id默认实现类为DefaultIdentifierGenerator雪花算法

使用@TableField的常见场景

  1. 成员变量与数据库字段名不一致
  2. 成员变量以is开头,且是布尔值
  3. 成员变量名与数据库关键字冲突
  4. 成员变量不是数据库字段
@TableName("user")
public class User extends Model<User> {
    @TableId(value="AUTO_ID", type = IdType.AUTO)
    private Integer autoId;
	@TableField("user_name")
    private String userName;
	@TableField("password")
    private String password;
    @TableField(exist=false)
    private String isNotExist; // 数据库不存在
}