这里简单记录常用的注解,详情需要去官网学习!!
1、@TableName 用于定义表名
2、@TableId 用于定义表的主键
属性:
value 用于定义主键字段名
type 用于定义主键类型(主键策略 IdType)
主键策略:
IdType.AUTO 主键自增,系统分配,不需要手动输入,但需要设置 mysql auto_increment IdType.NONE 未设置主键 IdType.INPUT 需要自己输入 主键值 IdType.ASSIGN_ID 系统分配 ID,用于数值型数据(Long,对应 mysql 中 BIGINT 类型) IdType.ASSIGN_UUID 系统分配 UUID,用于字符串型数据(String,对应 mysql 中 varchar(32) 类型)
3、@TableField 用于定义表的非主键字段
属性:
value 用于定义非主键字段名,用于别名匹配,假如java对象属性和数据库属性不一样 exist 用于指明是否为数据表的字段, true 表示是,false 为不是,假如某个java属性在数据库没对应的字段则要标记为faslse
fill 用于指定字段填充策略(FieldFill,用的不多)
字段填充策略:一般用于填充 创建时间、修改时间等字段
FieldFill.DEFAULT 默认不填充
FieldFill.INSERT 插入时填充
FieldFill.UPDATE 更新时填充
FieldFill.INSERT_UPDATE 插入、更新时填充。
注意,在使用 fill 字段填充策略时,需要实现处理才能生效,如下:
/** * 将MybatisObjectHandler注入spring容器中,操作数据添加或者修改时,自动给 * 指定字段添加数据 */ @Component public class MybatisObjectHandler implements MetaObjectHandler {
// birthday 指定的字段名称,表示在insert场合可以操作该方法 @Override public void insertFill(MetaObject metaObject) { setFieldValByName("birthday", new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { setFieldValByName("updateTime",new Date(),metaObject); } }
4、案列
@Data @TableName("Test3") public class Test3 { /** * IdType.AUTO 主键自增,不需要手动输入,但需要设置mysql auto_increment */ @TableId(value = "id",type = IdType.AUTO) private Integer id; @TableField(value = "name") private String name; /** * 某个java属性在数据库没对应的字段则要标记为faslse,默认是true */ @TableField(exist = false) private String address; /** * 插入时填充, 添加日期 */ @TableField(value = "birthday", fill = FieldFill.INSERT ) private Date birthday; }