赞
踩
定义的类上边增加@Named注解标注转换名称
定义转换规则
- import cn.hutool.core.util.StrUtil;
- import com.alibaba.fastjson.JSON;
- import org.mapstruct.Named;
- import org.springframework.stereotype.Component;
-
- import java.util.List;
- import java.util.Objects;
-
- /**
- * Mapping通用转换
- */
- @Component
- public class TypeConversionWorker {
- /**
- * 对象转json字符串
- *
- * @param obj
- * @return
- */
- @Named("toJsonString")
- public String toJsonString(Object obj) {
- if (Objects.isNull(obj)) {
- return null;
- }
- return JSON.toJSONString(obj);
- }
- /**
- * json字符串转对象
- *
- * @param jsonStr
- * @return
- */
- @Named("jsonStringToNameObject")
- public List<Name> jsonStringToObject(String jsonStr) {
- if (StrUtil.isEmpty(jsonStr)) {
- return null;
- }
- List<Name> names = JSON.parseArray(jsonStr, Name.class);
- return names;
- }
- /**
- * json字符串转对象
- *
- * @param jsonStr
- * @return
- */
- @Named("jsonStringToNameValueObject")
- public List<NameValue> jsonStringToNameValueObject(String jsonStr) {
- if (StrUtil.isEmpty(jsonStr)) {
- return null;
- }
- List<NameValue> names = JSON.parseArray(jsonStr, NameValue.class);
- return names;
- }
- /**
- * json字符串转对象
- *
- * @param jsonStr
- * @return
- */
- @Named("jsonStringToValueObject")
- public List<Value> jsonStringToValueObject(String jsonStr) {
- if (StrUtil.isEmpty(jsonStr)) {
- return null;
- }
- List<Value> names = JSON.parseArray(jsonStr, Value.class);
- return names;
- }
- }
使用@Mapper注解uses引入转换规则,eg:uses = TypeConversionWorker.class
@Mapping使用qualifiedByName标识转换规则,eg:qualifiedByName = "toJsonString"。
- import org.mapstruct.Mapper;
- import org.mapstruct.Mapping;
- import org.mapstruct.factory.Mappers;
-
- import java.util.List;
-
- @Mapper(uses = TypeConversionWorker.class)
- public interface ShopConvert {
-
- ShopConvert INSTANCE = Mappers.getMapper(ShopConvert.class);
- @Mapping(target = "serviceField", source = "serviceField", qualifiedByName = "jsonStringToNameObject")
- @Mapping(target = "costField", source = "costField", qualifiedByName = "jsonStringToNameValueObject")
- @Mapping(target = "examinationField", source = "examinationField", qualifiedByName = "jsonStringToValueObject")
- List<ShopRespVO> convertList(List<ShopDO> list);
-
- List<ShopSimpleRespVO> convertList02(List<ShopDO> list);
-
- @Mapping(target = "serviceField", source = "serviceField", qualifiedByName = "jsonStringToNameObject")
- @Mapping(target = "costField", source = "costField", qualifiedByName = "jsonStringToNameValueObject")
- @Mapping(target = "examinationField", source = "examinationField", qualifiedByName = "jsonStringToValueObject")
- ShopRespVO convert(ShopDO bean);
-
- @Mapping(target = "serviceField", source = "serviceField", qualifiedByName = "toJsonString")
- @Mapping(target = "costField", source = "costField", qualifiedByName = "toJsonString")
- @Mapping(target = "examinationField", source = "examinationField", qualifiedByName = "toJsonString")
- ShopDO convert(ShopCreateReqVO bean);
-
- @Mapping(target = "serviceField", source = "serviceField", qualifiedByName = "toJsonString")
- @Mapping(target = "costField", source = "costField", qualifiedByName = "toJsonString")
- @Mapping(target = "examinationField", source = "examinationField", qualifiedByName = "toJsonString")
- ShopDO convert(ShopUpdateReqVO bean);
-
-
- }
涉及到实体(非重点)
- import io.swagger.annotations.ApiModel;
- import io.swagger.annotations.ApiModelProperty;
- import lombok.Data;
- import lombok.EqualsAndHashCode;
-
- import java.util.Date;
- import java.util.List;
-
- @ApiModel("管理后台 - 商品信息 Response VO")
- @Data
- @EqualsAndHashCode(callSuper = true)
- public class ShopRespVO extends ShopBaseVO {
-
- @ApiModelProperty(value = "商品编号", required = true, example = "1024")
- private Long id;
-
-
- @ApiModelProperty(value = "创建时间", required = true, example = "时间戳格式")
- private Date createTime;
-
- /*分类名称*/
- private String systemClassificationName;
-
- /*前端回填ID*/
- private List<Long> ids;
-
- }
- import io.swagger.annotations.ApiModelProperty;
- import lombok.Data;
- import org.hibernate.validator.constraints.Length;
-
- import java.math.BigDecimal;
- import java.util.List;
-
- /**
- * 商品 Base VO,提供给添加、修改、详细的子 VO 使用
- * 如果子 VO 存在差异的字段,请不要添加到这里,影响 Swagger 文档生成
- */
- @Data
- public class ShopBaseVO {
-
- /**
- * 商品名称
- */
- @ApiModelProperty("商品名称")
- @Length(max= 255,message="编码长度不能超过255")
- private String name;
- /**
- * 商品分类
- */
- @ApiModelProperty("商品分类")
- private Long systemClassificationId;
- /**
- * 标准价格
- */
- @ApiModelProperty("标准价格")
- private BigDecimal price;
- /**
- * 最低价格
- */
- @ApiModelProperty("最低价格")
- private BigDecimal minPrice;
- /**
- * 商品状态(0正常 1停用)
- */
- @ApiModelProperty("商品状态(0正常 1停用)")
- private Byte status;
- /**
- * 服务字段
- */
- @ApiModelProperty("服务字段")
- private List<Name> serviceField;
- /**
- * 成本费用标准
- */
- @ApiModelProperty("成本费用标准")
- private List<NameValue> costField;
- /**
- * 补充报考字段
- */
- @ApiModelProperty("补充报考字段")
- private List<Value> examinationField;
- /**
- * 备注
- */
- @ApiModelProperty("备注")
- @Length(max= 255,message="备注长度不能超过255")
- private String remark;
- }
- import com.baomidou.mybatisplus.annotation.TableName;
- import io.swagger.annotations.ApiModelProperty;
- import lombok.Data;
- import lombok.EqualsAndHashCode;
- import org.hibernate.validator.constraints.Length;
-
- import java.math.BigDecimal;
- import java.util.Date;
-
- /**
- * 商品
- * @TableName system_shop
- */
- @TableName("system_shop")
- @Data
- @EqualsAndHashCode(callSuper = true)
- public class ShopDO extends TenantBaseDO {
-
- /**
- * 商品ID
- */
- @ApiModelProperty("商品ID")
- private Long id;
- /**
- * 商品名称
- */
- @ApiModelProperty("商品名称")
- @Length(max= 255,message="编码长度不能超过255")
- private String name;
- /**
- * 商品分类
- */
- @ApiModelProperty("商品分类")
- private Long systemClassificationId;
- /**
- * 标准价格
- */
- @ApiModelProperty("标准价格")
- private BigDecimal price;
- /**
- * 最低价格
- */
- @ApiModelProperty("最低价格")
- private BigDecimal minPrice;
- /**
- * 商品状态(0正常 1停用)
- */
- @ApiModelProperty("商品状态(0正常 1停用)")
- private Byte status;
- /**
- * 服务字段
- */
- @ApiModelProperty("服务字段")
- private String serviceField;
- /**
- * 成本费用标准
- */
- @ApiModelProperty("成本费用标准")
- private String costField;
- /**
- * 补充报考字段
- */
- @ApiModelProperty("补充报考字段")
- private String examinationField;
- /**
- * 创建者
- */
- @ApiModelProperty("创建者")
- @Length(max= 64,message="编码长度不能超过64")
- private String creator;
- /**
- * 创建时间
- */
- @ApiModelProperty("创建时间")
- private Date createTime;
- /**
- * 更新者
- */
- @ApiModelProperty("更新者")
- @Length(max= 64,message="编码长度不能超过64")
- private String updater;
- /**
- * 更新时间
- */
- @ApiModelProperty("更新时间")
- private Date updateTime;
- /**
- * 是否删除
- */
- @ApiModelProperty("是否删除")
- private Boolean deleted;
- /**
- * 租户编号
- */
- @ApiModelProperty("租户编号")
- private Long tenantId;
- /**
- * 备注
- */
- @ApiModelProperty("备注")
- @Length(max= 255,message="编码长度不能超过255")
- private String remark;
-
-
- }
- import io.swagger.annotations.ApiModel;
- import io.swagger.annotations.ApiModelProperty;
- import lombok.Data;
- import lombok.EqualsAndHashCode;
-
- import javax.validation.constraints.NotNull;
-
- @ApiModel("管理后台 - 商品更新 Request VO")
- @Data
- @EqualsAndHashCode(callSuper = true)
- public class ShopUpdateReqVO extends ShopBaseVO {
-
- @ApiModelProperty(value = "商品编号", required = true, example = "1024")
- @NotNull(message = "商品编号不能为空")
- private Long id;
-
-
- }
- import io.swagger.annotations.ApiModel;
- import lombok.Data;
- import lombok.EqualsAndHashCode;
- import lombok.ToString;
-
- @ApiModel("管理后台 - 商品创建 Request VO")
- @Data
- @EqualsAndHashCode(callSuper = true)
- @ToString(callSuper = true)
- public class ShopCreateReqVO extends ShopBaseVO {
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。