为什么 pojo 不要用 is_deleted

避免使用is_deleted字段名的原因

先说结论,不要用is_xxx(包括数据库字段)

首先在阿里 java规范中是强制数据库中用 is_deleted
在这里插入图片描述
但是一般情况下我们是用代码生成器生成 po,这样 pojo 中就也是 is_deleted

但是这样会有下面问题

JavaBeans规范定义了Java类属性(Property)的访问规则,其中对于boolean类型的属性,它的“getter”方法命名比较特殊:

  1. 对于普通属性
    • 字段名:private String name;
    • Getter方法:public String getName() { ... }
  2. 对于布尔类型属性
    • 字段名:private boolean deleted;
    • Getter方法:public boolean isDeleted() { ... } (注意,getter方法以 is 开头,而不是 get)

冲突点就在这里:

当你把字段名直接定义为 isDeleted 时:

  • 字段名:private boolean isDeleted;

根据JavaBeans规范,IDE或工具可能会为你生成一个名为 isIsDeleted() 的getter方法,或者更常见的是,它会认为 isDeleted() 就是这个字段的getter方法。

这会导致一个属性名(property name)的混淆。框架通过反射机制来查找属性时:

  • 它看到了一个 isDeleted() 方法,根据规范,它会推断这个类有一个名为 deleted 的布셔属性。
  • 但实际上,你类里的字段名是 isDeleted

这种字段名 (isDeleted)通过getter推断出的属性名 (deleted) 之间的不匹配,就是问题的根源。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值