美文网首页
java mapstruct 使用中dto添加自定义属性

java mapstruct 使用中dto添加自定义属性

作者: 東玖零 | 来源:发表于2021-03-10 16:30 被阅读0次
  1. java mapstruct 使用中dto添加自定义属性
  2. 推荐这款类型转换神器!Mapstruct新出的Spring插件
  3. 映射框架MapStruct
  4. 干掉 BeanUtils!这款 Bean 自动映射神器出 Spr
  5. Fragment
  6. MapStruct实现对象映射
  7. java 8 中List属性去重-redis序列
  8. Android-自定义全局拽托返回
  9. javaBean转换(mapstruct)
  10. HTML5 自定义属性
  11. 说明:小白一枚,记录学习中遇到的问题,描述可能不准确。

    场景:数据库中存用户性别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); 这一句不能少。

    说了一大堆,希望这个记录有点用处。

    相关文章