当前位置: 首页 > 知识库问答 >
问题:

ModelMapper配置

谷梁承宣
2023-03-14

当我试图将布尔映射到字符时,我看到了无法用ModelMapper解释的行为。

(我已经检查过了,这个问题与龙目岛无关)。

@Data @NoArgsConstructor @AllArgsConstructor
public class Entity { private boolean instance; }
@Data @NoArgsConstructor @AllArgsConstructor
public class Item { private char instance; }

public final class ModelMapperTest
{
    private final ModelMapper modelMapper = new ModelMapper();

    @Before
    public void before()
    {
        modelMapper.addMappings(new PropertyMap<Entity, Item>()
        {
            protected void configure()
            {
                map().setInstance(source.isInstance() ? 'Y' : 'N');
            }
        });
    }

    @Test
    public void map()
    {
        for (final Item item : map(new ArrayList<Entity>()
        {
            {
                this.add(new Entity(true));
                this.add(new Entity(false));
            }
        }))
        {
            System.out.println(item);
        }
    }

    public List<Item> map(final List<Entity> entities)
    {
        return modelMapper.map(entities, new TypeToken<List<Item>>(){}.getType());
    }
}

它产生字符“t”和“f”,而不是我想要的“Y”和“N”。

项目(实例=t)

项目(实例=f)

有人知道ModelMapper配置应该是什么样子吗?

共有1个答案

沈华皓
2023-03-14

我认为您需要创建一个转换器来将布尔映射为字符,如下所示:

Converter<boolean, char> toChar = new AbstractConverter<boolean, char>() {
  protected char convert(boolean source) {
    return source ? 'Y' : 'N;
  }
}; 

然后,您的PropertyMap应该使用此转换器将其映射如下:

    @Before
    public void before()
    {
        modelMapper.addMappings(new PropertyMap<Entity, Item>()
        {
            protected void configure()
            {
                using(toChar).map().setIsInstance(source.isInstance());
            }
        });
    }

请看这里:

  • ModelMapper。组织-转换器
 类似资料:
  • 我有一个JSON: 我创建了以下pojo 在我的控制器中,我有一个@PostMapping方法,我尝试检索DocumentToSignRestRequest: 并使用模型映射器将其传递给DocumentDto类:DocumentDto DocumentDto=ModelMapper。地图(documentToSignRestRequest,DocumentDto.class); 这个类的不同属性与

  • ModelMapper,Java Object Mapping 工具,类似BeanUtils,效率略低于Orika,但是内部策略丰富,配置方式更舒适。

  • 我有两个类使用ModelMapper将实体转换为DTO。在每个类中,我都在类的构造函数中配置了ModelMapper,以避免将所有关系转换为DTO并获得StackOverflow Error。 公司服务impl 公司利润 当我运行应用程序时,我得到一个错误: com的映射已存在。特写国际。批准dtos。公司服务模块化。setCompanyService()。 如何为ModelMapper提供两个配

  • 这是我的DTO: 这是我的实体: 我想配置我的ModelMapper将Tag#id映射到TagVolumeDTO#idTag。这可能吗?

  • 我试图使用命令“java-jar XXXX.jar”运行spring boot项目,但出现以下错误: 错误:发生JNI错误,请检查您的安装并重试线程“main”java.lang.NoClassDefFoundError中的异常:org/modelmapper/modelmapper位于java.lang.Class.getDeclaredMethods0(本机方法),java.lang.Clas

  • 我与ModelMapper框架有麻烦。请解释为什么我看到以下行为。 我在build.gradle有以下依赖性 和一个类客户: 我还有一个地图绘制工具: 还有一个测试 在fred()中,方法输出是非红色的“Customer{name=fred,age=40}”(“Customer{name=null,age=40}”)。你能解释一下为什么吗?为什么我在第一个方法中看不到输出“George”?