springboot中使用mapstruct自定义方法实现返回前端的字段预处理

背景:

在实际开发中,我们经常会遇到实体类转换的问题,比如说:给DTO转VO的时候,我们希望将其中为null的转为空字符串,又或者将1、2、3等魔法值转为相应字符…

方案:

这里我们使用mapstruct来实现实体映射。

它是一个注解处理器,用于生成类型安全、高性能和无依赖的 bean 映射代码。
与动态映射框架相比,MapStruct 具有以下优势:

  • 通过使用普通方法调用而不是反射来快速执行
  • 编译时类型安全:只能映射相互映射的对象和属性,不能将订单实体意外映射到客户 DTO 等。
  • 在构建时清除错误报告,如果映射不完整(并非所有目标属性都被映射)映射不正确(找不到合适的映射方法或类型转换)

详情可以查看官网:https://mapstruct.org/documentation/stable/reference/html/
这里我们使用它提供的自定义自定义映射方法来实现我们的需求

public class ConvertNull {
    private ConvertNull() {
    }
    // 这个定义一个转化方法,接受一个参数
    public static String characterTrailing(String value) {
    	// 为null的时候转为空字符串
        if (StringUtils.isNullOrUndefined(value)) {
            return "";
        }
        // .....................
        // 同样可以定义我们的自定义映射实现
        return value;
    }
}

定义映射器的 Java 接口

@Mappings(value = {
            @Mapping(target = "pid", source = "p_id"),
            @Mapping(target = "content", expression = "java(marchsoft.modules.linglu.common.service.mapstruct.ConvertNull.characterTrailing(categoryJsonDTO.getDesc()))")
    })
    PostCategory jsonDtoToEntity(CategoryJsonDTO categoryJsonDTO);

注意:expresssource ion 使用全路径。target是我们要转换的目标
expression 和source 不能同时出现在一个mapping中

随笔

1、关于vue前端使用history路由模式的时候,首页登录重定向,类似与访问
xxxx.com/login?redirect=%2Fdashboard刷新之后路径重新history定向导致xxxx.com/login?redirect=%2Fdashboard?redirect=%2Fdashboard
可以修改nginx的配置

 location / {
        root  /data/project/dist/;
        try_files $uri $uri/ /index.html?s=$uri&$args;
        index index.html index.htm index.php;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值