代码开发中po转vo中用到了mapstruct。
在进行某一个对象的转换中,启动服务,Build出错,代码并没有报错。
Error:(33, 17) java: Can't map property "java.lang.String handlSituation" to "java.util.List<java.lang.String> handlSituation".
Consider to declare/implement a mapping method: "java.util.List<java.lang.String> map(java.lang.String value)".
第一次使用mapstruct,不是很熟悉,发现是po中的字段为String,vo中是List,所以报错转换异常。
最终解决方案如下:
@Mapper(imports = MapStruct.class)
public interface MapStructMapper {
MapStructMapper INSTANCE = Mappers.getMapper(MapStructMapper.class);
@Mapping(expression = "java(MapStruct.strToList(cMain.getHand()))", target = "handVo")
CMainVo cMainToCMainVo(CMain cMain);
}
public class MapStruct {
public static List<String> strToList(String hand){
List<String> list = new ArrayList<>();
list.add(hand);
return list;
}
}
哪有不足,欢迎指出!
参考:https://stackoverflow.com/questions/53132415/mapstruct-mapping-string-to-liststring
参考:https://www.cnblogs.com/mmzs/p/12735212.html
在Java开发中,使用MapStruct进行对象转换时遇到一个问题,即从PO对象的String字段转换到VO对象的List<String>字段导致编译错误。通过查阅Stack Overflow和博客,找到了解决方案:定义一个辅助方法strToList()来处理转换。在MapStructMapper接口中使用@Mapping注解结合表达式调用此辅助方法,成功解决了转换异常。这是一个关于MapStruct使用和Java对象转换的实例。
8095





