使用Lombok 同时使用@Data 和 @Builder修饰实体类对象是,mybatis报字段映射错误的原因以及解决方法

437 阅读1分钟

Lombok 出现方便开发人员的开发,提高了开发效率,最近在开发项目的时候,发现了一个Lombok @Builder注解和@Data注解同时使用时的一个问题。

为了代码优雅,在构造POJO类的时候,采用链式的builder方式赋值。编译没有问题,但是在代码的运行中却出现了报错,无一例外都报字段映射错误的问题,经过验证发现

竟然是lombok@Data和@Builder一起用无法添加无参构造方法引起的,非常隐蔽。很多框架都是同反射等调用无参数构造方法来创建实例的,需要注意。单独使用@Data注解,编译后的类文件会生成无参数构造方法

解决方法为即为该POJO增加一个无参数的构造方法,并用@Tolerate修饰

正确写法如下:

@Builder
@Data
public class Dog {
 
    private String name;
 
    private Integer age;
 
    private String nickName;
 
    private String test;
 
    @Tolerate
    Dog() {}
}