springboot~lombok使用总结

栏目: Java · 发布时间: 7年前

内容简介:生成getter和setter块@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。通过官方文档,可以得知,当使用@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和 hashCode()方法,且不会使用父类的属性,这就导致了可能的问题。

@Getter & @Setter

生成getter和setter块

@Data注解

@Data相当于@Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode这5个注解的合集。

通过官方文档,可以得知,当使用@Data注解时,则有了@EqualsAndHashCode注解,那么就会在此类中存在equals(Object other) 和 hashCode()方法,且不会使用父类的属性,这就导致了可能的问题。

比如,有多个类有相同的部分属性,把它们定义到父类中,恰好id(数据库主键)也在父类中,那么就会存在部分对象在比较时,它们并不相等,却因为lombok自动生成的equals(Object other) 和 hashCode()方法判定为相等,从而导致出错。

修复此问题的方法很简单:

  1. 使用@Getter @Setter @ToString代替@Data并且自定义equals(Object other) 和 hashCode()方法,比如有些类只需要判断主键id是否相等即足矣。
  2. 或者使用在使用@Data时同时加上@EqualsAndHashCode(callSuper=true)注解

ToString注解

把所有属性都写到字符里返回

@EqualsAndHashCode注解

  1. 此注解会生成equals(Object other) 和 hashCode()方法。
  2. 它默认使用非静态,非瞬态的属性
  3. 可通过参数exclude排除一些属性
  4. 可通过参数of指定仅使用哪些属性
  5. 它默认仅使用该类中定义的属性且不调用父类的方法
  6. 可通过callSuper=true解决上一点问题。让其生成的方法中调用父类的方法。

@Entity

[@Entity]

必须与@Id注解 结合使用

否则 No identifier specified for entity:

name 属性

(可选)实体名称。 缺省为实体类的非限定名称。

该名称用于引用查询中的实体。

该名称不能是 Java 持久性查询语言中的保留字面值。

不与@Table结合的话 表名 默认为 SnakeCaseStrategy(命名策略 )为表名

若使用 name属性 且没有与@Table结合 则表名为 name值的SnakeCaseStrategy(命名策略 )

例如:

@Entity  
        public class UserEntity{...} 表名 user_entity  
        @Entity(name="UE")  
        public class UserEntity{...} 表名 ue  
        @Entity(name="UsEntity")  
        public class UserEntity{...} 表名 us_entity

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

演算法圖鑑

演算法圖鑑

石田保輝、宮崎修一 / 陳彩華 / 臉譜 / 2017-12 / TWD450

★日本超人氣演算法學習書 ★逾50萬次下載量,「Apple年度最佳APP」書籍化! ★隨書附贈獨家贈品「圖形搜尋和排序圖解記憶表」 ★★ 讀再多文字解說都看不懂?沒關係,全部畫給你看,一次弄懂演算法到底是什麼!★★ ●直觀理解,從基礎開始學習,一用就上手的演算法專書! ●全圖像化step by step,完整拆解制霸AI時代的演算法精髓! ●詳解演算法的奧妙、執......一起来看看 《演算法圖鑑》 这本书的介绍吧!

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具