【问题标题】:Use spring-data-jpa and dozer in spring-mvc在 spring-mvc 中使用 spring-data-jpa 和 dozer
【发布时间】:2015-10-23 09:25:09
【问题描述】:

spring-data-jpa中,repository返回Page<T>,实现类为PageImpl<T>,那我就不能用dozer来转换了,因为pageImpl有两个方法:hasContent()getContent(),推土机不能分析类型。 PageRequest 缺少参数构造函数,推土机也无法转换。我的解决方法是重写它们,你有更好的方法吗?

【问题讨论】:

    标签: spring-mvc spring-data-jpa dozer


    【解决方案1】:

    您需要创建一个额外的类并将您的页面映射到它,这里是一个示例:

    Dozer 的 Spring 配置:(例如:xml 文件位于 src/main/resources/META-INF/dozer 下)

    XML 配置文件:

    <?xml version="1.0" encoding="UTF-8"?>
    <mappings xmlns="http://dozer.sourceforge.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://dozer.sourceforge.net http://dozer.sourceforge.net/schema/beanmapping.xsd">
    
    
     <mapping wildcard="true" type="one-way">
        <class-a>com.comp.proj.domain.SrcClass
        </class-a>
        <class-b>com.comp.proj.model.DesClass
        </class-b>
    </mapping>
    
    
    
    <mapping wildcard="false" type="one-way">
        <class-a>org.springframework.data.domain.Page</class-a>
        <class-b>com.comp.proj.model.PageResponse
        </class-b>
        <field>
            <a>totalElements</a>
            <b>totalElements</b>
        </field>
        <field>
            <a>totalPages</a>
            <b>totalPages</b>
        </field>
        <field>
            <a>content</a>
            <b>desClasses</b>
        </field>
    </mapping>
    
    
    
    </mappings>
    

    弹簧配置:

    <bean class="org.dozer.spring.DozerBeanMapperFactoryBean">
                <property name="mappingFiles" value="classpath:META-INF/dozer/*.xml" />
       </bean>
    

    页面响应类:

    public class PageResponse {
    
    
        private List<DesClass> desClasses;
    
        private Integer totalPages;
    
        private Integer totalElements;
    
        //sertters and getters
    }
    

    现在在你的控制器中注入:Mapper

    @Resource
    Mapper mapper;
    

    并以这种方式将您的Page&lt;SrcClass&gt; page 转换为PageResponse

    mapper.map(page,PageResponse.class);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-07-02
      • 2013-12-15
      • 2012-03-25
      • 2016-06-22
      • 2017-11-29
      • 1970-01-01
      • 2016-12-10
      相关资源
      最近更新 更多