lombok的踩坑
1. @Builder
使用@Builder构建的时候如果不显式的对某变量赋值的话默认就是null,因为这个变量此时是在Builder
类里的,通过调用build()方法生成具体T类则是通过私有构造函数来实例化,默认是全参数的构造函数。
和mybatis一起使用的时候,会造成实体映射错误。报数组越界异常.
"nested exception is org.apache.ibatis.exceptions.PersistenceException: "
解决方法:
使用@Builder注解的时候,尽量加上@AllArgsConstructor注解和@NolArgsConstructor注解
2. @EqualsAndHashCode
当这个注解设置callSuper=true
时,会调用父类的equlas()方法。对象判断equals时,就会连同父类属性一起做equals判断。
equals()的实现实际上是受业务场景影响的,无论是否使用父类的属性做比较都是有可能的。所以开发者还是需要根据实际业务去使用callSuper。
加上exclude可以排除一些字段