package com.chinaunicom.base.server.user.converter;
import com.chinaunicom.base.server.user.entity.UserSpace;
import com.chinaunicom.base.server.user.converter.worker.UserSpaceConvert;
import com.chinaunicom.base.server.user.entity.UserSpaceEntity;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.Mappings;
import org.mapstruct.factory.Mappers;
import java.util.List;
@Mapper(componentModel = "spring", uses = {UserSpaceConvert.class})
public interface UserSpaceBaseConverter {
UserSpaceBaseConverter INSTANCES = Mappers.getMapper(UserSpaceBaseConverter.class);
@Mappings({
@Mapping(source = "id", target = "id"),
@Mapping(source = "employeeName", target = "employeeName"),
@Mapping(source = "rootSpace", target = "rootSpace"),
@Mapping(source = "createTime", target = "createTime"),
@Mapping(source = "deleted", target = "deleted")
})
UserSpaceEntity to(UserSpace userSpace);
@Mappings({
@Mapping(source = "id", target = "id"),
@Mapping(source = "employeeName", target = "employeeName"),
@Mapping(source = "rootSpace", target = "rootSpace"),
@Mapping(source = "createTime", target = "createTime"),
@Mapping(source = "deleted", target = "deleted"),
@Mapping(target = "age", expression = "java(com.chinaunicom.base.server.user.converter.worker.UserSpaceConvert.getAgeFromFeatures(userSpaceEntity.getFeatures()))")
})
UserSpace back(UserSpaceEntity userSpaceEntity);
List toList(List source);
List backList(List source);
}
UserSpaceEntity 有字段为string类型,保存的是json格式。对应的模型层有属性age是Integer类型的
public class UserSpaceConvert {
public static Integer getAgeFromFeatures(String json) {
Map valueMap = JSON.parseObject(json, Map.class);
if (valueMap.containsKey("age")) {
return Integer.valueOf(valueMap.get("age").toString());
}
return null;
}
}