先说结论,不要用is_xxx(包括数据库字段)
首先在阿里 java规范中是强制数据库中用 is_deleted

但是一般情况下我们是用代码生成器生成 po,这样 pojo 中就也是 is_deleted
但是这样会有下面问题
JavaBeans规范定义了Java类属性(Property)的访问规则,其中对于boolean类型的属性,它的“getter”方法命名比较特殊:
- 对于普通属性:
- 字段名:
private String name; - Getter方法:
public String getName() { ... }
- 字段名:
- 对于布尔类型属性:
- 字段名:
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) 之间的不匹配,就是问题的根源。
避免使用is_deleted字段名的原因

被折叠的 条评论
为什么被折叠?



