pojo實體bool字段不要加is前綴
pojo實體bool字段不要加is前綴,在lombok這類工具自動的getter,setter方法時,對于布爾類型,它有自己的命名規則,boolean會把getter方法添加統一前綴is,如boolean的getter方法就是isDefault(),而如果你的字段也命名為isDefault,那么在反序化時可能出現歧義(default不是isDefault);而問題更嚴重的是,因為你加了is前綴,那么在boolean和Boolean的getter名稱上也會出現不同,這在使用BeanUtils.copyProperties這類方法時,無法從相同的boolean屬性名復制到另一個實體Boolean的相同屬性上面;而如果你布爾類型字段不加is前綴,是不會有這個問題的!
試驗代碼
UserDto
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder(toBuilder = true)
public class UserDto {
private String name;
private Boolean valid;//小寫的boolean,在get方法前自己加is
private Boolean isVisible;
}
UserCreateDTO
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder(toBuilder = true)
public class UserCreateDTO {
private String name;
private boolean valid;//小寫的boolean,在get方法前自己加is
private boolean isVisible;
}
測試代碼
UserDto userDto = new UserDto();
userDto.setName("lind");
userDto.setValid(true);
userDto.setIsVisible(true);
UserCreateDTO userCreateDTO= new UserCreateDTO();
BeanUtils.copyProperties(userDto, userCreateDTO);
可以看到,帶有is前綴的字段沒有成功復制值,而valid字段,是可以復制成功的,所以,我們不要在boolean字段前面添加is前綴

浙公網安備 33010602011771號