我的DTO最后一个属性是lAlarmTime,但是我用mapstruct帮我把Entity转DTO,但是我用postman发起请求结果是lalarmTime
DTO
@Data
public class GetAlarmDto {
private Long id;
private String alarmId;
private String item;
private String uuid;
private String criticalPoint;
private Integer criticalNumber;
private Integer continuance;
private Integer coolDownTime;
private Integer status;
private String lAlarmTime;
Mapstruce 实体 -> DTO
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface GetAlarmMapper extends BaseMapper<GetAlarmDto, Alarm> {
@Override
default GetAlarmDto toDto(Alarm entity) {
if ( entity == null ) {
return null;
}
GetAlarmDto getAlarmDto = new GetAlarmDto();
getAlarmDto.setId( entity.getId() );
getAlarmDto.setAlarmId( entity.getAlarmId() );
getAlarmDto.setItem(entity.getMonitorItem().getItemName());
getAlarmDto.setUuid(entity.getVmInstance().getUuid());
getAlarmDto.setCriticalPoint( entity.getCriticalPoint() );
getAlarmDto.setCriticalNumber( entity.getCriticalNumber() );
getAlarmDto.setContinuance( entity.getContinuance() );
getAlarmDto.setCoolDownTime( entity.getCoolDownTime() );
getAlarmDto.setStatus( entity.getStatus() );
getAlarmDto.setLAlarmTime(getLastAlarmTime(entity.getLastAlarmTime()));
return getAlarmDto;
}
邮差结果
我知道可以通过@jsonproperty来实现,但是我还是想知道为什么会这样,是在序列化或者反序列化的过程中受json的影响还是
通常建议在定义变量名时遵循标准的 Java 命名约定,通常使用驼峰命名法,第一个单词的首字母小写,后面每个单词的首字母大写。
在您的例子中,变量名“lAlarmTime”不遵循此约定,因为它在变量名中间使用大写字母“A”。您可能需要考虑将变量重命名为“lastAlarmTime”以使其与命名约定保持一致。
此外,“private”关键字表示该变量只能在定义它的类中访问。如果您希望其他类能够访问此变量,您可能需要考虑使用 getter 和/或 setter 方法或将访问级别更改为“public”。
在你的情况下,你可以使用下面示例中的东西!..
@Data
public class GetAlarmDto {
@JsonProperty("YourCustomName")
private String lAlarmTime;
}