lombok是不是加了@data标签后不应该自己手动再去写tostring方法?

发布于 2022-09-12 12:56:46 字数 148 浏览 31 评论 0

开发过程中发现一个问题,要是用Lombok注释的bean如果自己手写了tostring方法的话,要是bean在增加字段的时候会出现mybatis查询出来的数据没有新加的那个字段,只有在tostring方法里把那个新加的字段加上后才会把那个字段值查出来,这是因为lombok的原因吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

柏拉图鍀咏恒 2022-09-19 12:56:46

你手写了toString()方法,会覆盖lombok的方法,调用的时候自然调用你定义的,新增字段你的toString方法中没有加上,那肯定打印不出来.不是Lombok的问题

迷荒 2022-09-19 12:56:46

@Data 的源码如下,我选择一部分翻一下

/**
 * Generates getters for all fields, a useful toString method, and hashCode and hashCode implementations that check * all non-transient fields. Will also generate setters for all non-final fields, as well as a constructor. * <p>
 * Equivalent to {@code @Getter @Setter @RequiredArgsConstructor @ToString @EqualsAndHashCode}. * <p>
 * Complete documentation is found at <a href="https://projectlombok.org/features/Data">the project lombok features page for @Data</a>.

 * 为所有的字段生成Get方法,同时生成一个有效的toString() 方法
 * 基于所有的非transient修饰的字段生成 hashCode() 和 hashCode() 方法
 * 同时也为所有的非final字段生成Setter方法,以及为所有的final字段生成构造方方法




 */
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.SOURCE)
public @interface Data {
 /**
 * If you specify a static constructor name, then the generated constructor will be private, and * instead a static factory method is created that other classes can use to create instances. * We suggest the name: "of", like so: ** <pre>
 *     public @Data(staticConstructor = "of") class Point { final int x, y; } * </pre>
 *  * Default: No static constructor, instead the normal constructor is public.
 *  * @return Name of static 'constructor' method to generate (blank = generate a normal constructor).
 */ String staticConstructor() default "";
}

所以结合着@Data 的注释应该能非常清楚地知道他会自己生成toString()方法,所以不需要自己手写

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文