【问题标题】:Mapping Page of MyObject to Page of MyObjectDTO将 MyObject 的页面映射到 MyObjectDTO 的页面
【发布时间】:2019-06-19 06:57:29
【问题描述】:

我在我的项目中使用骆驼推土机将 MyObject 映射到 MyObjectDTO。 Spring 存储库返回Page<MyObject>。我需要将Page<MyObject> 映射到Page<MyObjectDTO>。这种映射是否存在没有迭代 Page.content 并为每个项目转换的好方法?

我以这种方式映射单个对象:

dozerBeanMapping.xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<mappings xmlns="http://dozermapper.github.io/schema/bean-mapping"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://dozermapper.github.io/schema/bean-mapping http://dozermapper.github.io/schema/bean-mapping.xsd">

    <mapping>
        <class-a>ru.test.MyObject</class-a>
        <class-b>ru.test.MyObjectDTO</class-b>
        <field>
            <a>myField</a>
            <b>testField</b>
        </field>
    </mapping>
</mappings>

RestRoute.java

  rest("/search").description("")
                .get("/{id}")
                .consumes("application/json").to("direct:getMyObjectByID")

 from("direct:getMyObjectByID")
                .routeId("direct:getMyObjectByID")
                .bean("myObjectRepository", "getMyObjectById(${header.id})")
                .to("dozer:transformMyObjectDTO?mappingFile=dozerBeanMapping.xml&targetModel=ru.test.MyObjectDTO")

【问题讨论】:

    标签: java apache-camel dozer


    【解决方案1】:

    我暂时的可怕解决方案:立即从 Spring Data 存储库返回 DTO 列表。

    @Repository("myObjectRepository")
    public interface MyObjectRepository extends CrudRepository<MyObject, Integer> {
    
     @Query(value = "SELECT new ru.test.MyObjectDTO(l.id, l.otherfields)" +
                " from MyObject l where l.otherObject=:otherObject")
        Page<MyObjectDTO> getAllByOtherObject(@Param("otherObject") OtherObject otherObject, Pageable pageable);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-17
      • 1970-01-01
      • 1970-01-01
      • 2016-12-22
      • 1970-01-01
      相关资源
      最近更新 更多