说明:小白一枚,记录学习中遇到的问题,描述可能不准确。
场景:数据库中存用户性别sex的值是1或0(分别对应男女),dto和entity中都有sex属性,但前端页面需要是男女,那我们就在dto中添加sexValue吧,并实现了sexValue的get方法。
现像:无论怎么编译运行,sexValue都没有值。
百度“java mapstruct 使用中给dto添加entity中没有的属性”,怎么搜索都没有结果,最终看其他大佬写的代码解决了,下面记录一下。
还有一个前提是使用jpa,entity绑定了对应的数据库表名及字段名,dto中声明entity中的一样的属性,我们就能使用mapstruct的todto方法输出对应的值,如果数据库中没有这个值就会报错。
其实就是把entity中属性声明换成get方法即可,上面代码。
public class UserDto extends BaseDTO {
private Integer sex;
private String sexValue;
}
public class MxUser extends BaseEntity {
// 性别,0女,1男
private Integer sex;
// 0女,1男,这个是数据库表中没的字段
public String getSexValue() {
return null != sex && 0 == sex ? "女" : "男";
}
}
@Mapper(componentModel = "spring", unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface UserMapper extends BaseMapper<UserDto, MxUser> {
UserDto toDto(MxUser entity);
}
UserDto toDto(MxUser entity); 这一句不能少。
说了一大堆,希望这个记录有点用处。
网友评论