gpt4 book ai didi

java - 在 Eclipse 项目中使用 MapStruct 将 "dirty"字符串字段映射为 double

转载 作者:太空宇宙 更新时间:2023-11-04 09:43:47 26 4
gpt4 key购买 nike

给定:

我在 Eclipse 项目中使用 MapStruct 将“脏”字符串转换为数字:

String SourcePojo.area = "120,5 sqm"
double TargetPojo.area = 120.5

我可以通过以下方式将“脏”字符串转换为数字:

double extractDoubleFromString(String string) throws ParseException{
NumberFormat format = NumberFormat.getInstance(Locale.GERMAN);
return format.parse(string).doubleValue();
}

我尝试过的

使用 Mapstruct 我编写了这个映射器:

@Mapper
public interface MyMapper {

MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);


@Mapping(source="space", target="space", qualifiedByName="StringToDouble")
TargetPojo mapSourceToTarget(TargetPojo aAED);

@Named("StringToDouble")
default double extractDoubleFromString(String string) throws ParseException{
NumberFormat format = NumberFormat.getInstance(Locale.GERMAN);
return format.parse(string).doubleValue();
}
}

在生成的 MapperImpl 中我找到了这段代码:

if ( aAED.getSpace() != null ) {
targetPojo.space( Double.parseDouble( aAED.getSpace() ) );
}

看起来根本没有使用命名方法。我仍然遇到与添加之前相同的错误。

最佳答案

我刚刚尝试了你的映射器

@Mapper
public interface MyMapper {

MyMapper INSTANCE = Mappers.getMapper(MyMapper.class);

@Mapping(source = "space", target = "space", qualifiedByName = "StringToDouble")
TargetPojo mapSourceToTarget(SourcePojo aAED);

@Named("StringToDouble")
default double extractDoubleFromString(String string) throws ParseException {
NumberFormat format = NumberFormat.getInstance(Locale.GERMAN);
return format.parse(string).doubleValue();
}
}

这会生成:

try {
targetPojo.setSpace( extractDoubleFromString( aAED.getSpace() ) );
}
catch ( ParseException e ) {
throw new RuntimeException( e );
}

它可能对您不起作用的一个原因是,如果您没有使用org.mapstruct.Named,而是使用另一个包中的@Named

关于java - 在 Eclipse 项目中使用 MapStruct 将 "dirty"字符串字段映射为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55665765/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com