package com.dy.pipIrrDemo.demo; import com.alibaba.fastjson2.JSONObject; import com.dy.pipIrrGlobal.pojoDemo.DemoTest; import com.dy.pipIrrGlobal.pojoDemo.DemoTestAttr; import org.apache.commons.lang3.ObjectUtils; import org.apache.commons.lang3.StringUtils; import org.mapstruct.Mapper; import org.mapstruct.Mapping; import org.mapstruct.Named; import org.mapstruct.factory.Mappers; import java.util.List; @Mapper public interface DemoTestMapper { DemoTestMapper INSTANCT = Mappers.getMapper(DemoTestMapper.class); /** * vo转po * @param vo * @return */ @Mapping(target = "phone", source = "tel") @Mapping(target = "createDt", source = "createDt", dateFormat = "yyyy-MM-dd") @Mapping(target = "age", source = "age", numberFormat = "#0.00") @Mapping(target = "id", ignore = true) @Mapping(target = "nickName", defaultValue = "别名") @Mapping(target = "attr", qualifiedByName = "attrJsonToObject") DemoTest vo2po(DemoTestVo vo); /** * * @param vos * @return */ List vos2pos(List vos) ; /** * po转vo * @param po * @return */ @Mapping(target = "tel", source = "phone") @Mapping(target = "attr", qualifiedByName = "attrObjectToJson") DemoTestVo po2vo(DemoTest po); /** * * @param pos * @return */ List pos2vos(List pos) ; /** * json字符串转对象 */ @Named("attrJsonToObject") default DemoTestAttr attrJsonToObject(String jsonStr) { if (StringUtils.isEmpty(jsonStr)) { return null; } return JSONObject.parseObject(jsonStr, DemoTestAttr.class); } /** * 对象转json字符串 */ @Named("attrObjectToJson") default String attrObjectToJson(DemoTestAttr attr) { if (ObjectUtils.isEmpty(attr)) { return null; } return JSONObject.toJSONString(attr) ; } }