@ApiModel
在实体类上边使用,标记类时swagger的解析类
@Accessors
(1)该注解主要作用是:当属性字段在生成 getter 和 setter 方法时,做一些相关的设置。
(2)当它可作用于类上时,修饰类中所有字段,当作用于具体字段时,只对该字段有效。
@Data
相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集
通过官方文档,可以得知,当使用@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和 hashCode()方法,且不会使用父类的属性,这就导致了可能的问题。
比如,有多个类有相同的部分属性,把它们定义到父类中,恰好id(数据库主键)也在父类中,那么就会存在部分对象在比较时,它们并不相等,却因为lombok自动生成的equals(Object other) 和 hashCode()方法判定为相等,从而导致出错。
修复此问题的方法很简单:
@TableField(exist = false)
注解加载bean属性上,表示当前属性不是数据库的字段,但在项目中必须使用,这样在新增等使用bean的时候,mybatis-plus就会忽略这个,不会报错
否则会报一个如下的异常。
###Error querying database. Cause:com.mysql.jdbc.exception.jdbc4.MySQLSyntaxErrorException:Unknown column ‘***’ 'in field list’
@TableId
这个注释主要用于对应数据库表的实体类中的主键属性
@TableId(value=“数据库主键字段”,type = IdType.六种类型之一)
AUTO | 数据库自增ID |
NONE | 数据库未设置主键类型(将会跟随全局) |
INPUT | 用户输入ID(该类型可以通过自己注册自动填充插件进行填充) |
ID_WORKER | 默认的全局唯一ID (idWorker) |
UUID | 全局唯一ID(UUID) |
ID_WORKER_STR | 字符串全局唯一ID(ID_WORKER 的字符串表示) |
@TableName
是mybatis-plus中的注解,主要是实现实体类型和数据库中的表实现映射。
注意,不要将@TableName和@Table注解认为是一个,虽然功能相同,但是,@TableName是mybatis-plus中的注解,@Table是Hibernate中的注解。