springboot实体类的⼀些注解学习笔记
⼀实体类:entity /domain/model
1)使⽤lombuk插件:pligins->安装lombok插件
加了@Data注解的类,编译后会⾃动给我们加上下列⽅法:
所有属性的get和set⽅法, 注解在类上,为类提供读写属性
toString ⽅法,注解在类上, 为类提供 toString() ⽅法
hashCode⽅法
equals⽅法
2)@EqualsAndHashCode
原⽂中提到的⼤致有以下⼏点:
1. 此注解会⽣成equals(Object other) 和 hashCode()⽅法。
2. 它默认使⽤⾮静态,⾮瞬态的属性
3. 可通过参数exclude排除⼀些属性
4. 可通过参数of指定仅使⽤哪些属性
5. 它默认仅使⽤该类中定义的属性且不调⽤⽗类的⽅法
6. 可通过callSuper=true解决上⼀点问题。让其⽣成的⽅法中调⽤⽗类的⽅法。
另:@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。springmvc的注解有哪些
通过官⽅⽂档,可以得知,当使⽤@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和hashCode()⽅法,且不会使⽤⽗类的属性,这就导致了可能的问题。
⽐如,有多个类有相同的部分属性,把它们定义到⽗类中,恰好id(数据库主键)也在⽗类中,那么就会存在部分对象在⽐较时,它们并不相等,却因为lombok⾃动⽣成的equals(Object other) 和 hashCode()⽅法判定为相等,从⽽导致出错。
想要不出现类属性相同错误@EqualsAndHashCode(callSuper = false)
3)@Accessors(chain = true)
翻译是存取器。通过该注解可以控制getter和setter⽅法的形式。
fluent 若为true,则getter和setter⽅法的⽅法名都是属性名,且setter⽅法返回当前对象。
4)mybatis-plus的 @Tableld:属性与主键的映射关系。例如 @TableId(value = "company_id", type = IdType.INPUT)
@TableField:列与属性的映射关系。例如@TableField("company_id")
5)@Tablelogic表逻辑处理注解(逻辑删除)
执⾏是效果:
加@TableLogic的情况下
⾛ Update 表名 set 加注解的列=值 where del=值
不加@TableLogic的情况下
⾛ delete from 表名 where del=值
6)在SpringMVC后台控制层获取参数的⽅式主要有两种,
⼀种是Parameter("name"),
另外⼀种是⽤注解@RequestParam直接获取。这⾥主要讲这个注解
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论