原理
“约定大于配置“
MP通过扫描实体类,并基于反射获取实体类信息作为数据库表信息。
- 类名驼峰转下划线作为表名
- 名为id的字段作为主键
- 变量名驼峰转下划线作为标的字段名
常见注解
MP比较常用的几个注解如下:
- @TableName: 用来指定表名
- @TableId: 用来指定表的主键字段信息
- @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枚举
- AUTO:数据库自增长
- INPUT:通过set方法自行输入
- ASSIGN_ID: 分配ID·接口identifierGenerator的方法nextId来生成id默认实现类为DefaultIdentifierGenerator雪花算法
使用@TableField的常见场景
- 成员变量与数据库字段名不一致
- 成员变量以is开头,且是布尔值
- 成员变量名与数据库关键字冲突
- 成员变量不是数据库字段
@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; // 数据库不存在
}