Java 如何使用模型映射器将泛型类型映射到集合对象?

Java 如何使用模型映射器将泛型类型映射到集合对象?,java,modelmapper,Java,Modelmapper,我试图使用表示DAO和模型类的库映射两种泛型类型- 模型类- public class PageModel<T> { @JsonProperty("items") private List<T> items; @JsonProperty("meta") private MetaModel meta; public PageModel() { } public PageModel(int current, i

我试图使用表示DAO和模型类的库映射两种泛型类型-

模型类-

public class PageModel<T> {

    @JsonProperty("items")
    private List<T> items;

    @JsonProperty("meta")
    private MetaModel meta;

    public PageModel() {

    }

    public PageModel(int current, int limit) {
         this.items = new ArrayList<>();
         this.meta = new MetaModel(current, limit);
    }

    @JsonProperty("items")
    public List<T> getItems() {
        return items;
    }

    @JsonProperty("items")
    public void setItems(List<T> items) {
        this.items = items;
    }

    @JsonProperty("meta")
    public MetaModel getMeta() {
        return meta;
    }

    @JsonProperty("meta")
    public void setMeta(MetaModel meta) {
        this.meta = meta;
    }

}
public class Page<T> {
    private List<T> items;
    private int count;

    public Page(List<T> items, int count) {
        if(items == null)
            throw new IllegalArgumentException("items can not be null");

        this.items = items;
        this.count = count;
    }

    public List<T> getItems() {
        return items;
    }

    public void setItems(List<T> items) {
        if(items == null)
            throw new IllegalArgumentException("items can not be null");

        this.items = items;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}
        ModelMapper modelMapper = new ModelMapper();

        modelMapper.getConfiguration()
                .setMatchingStrategy(MatchingStrategies.STRICT);

        modelMapper.addMappings(new PropertyMap<Page<?>, PageModel<?>>() {
            @Override
            protected void configure() {
                map().getMeta().setTotal(source.getCount());
            }
        });

        modelMapper.addMappings(new PropertyMap<Subject, SubjectModel>() {
            @Override
            protected void configure() {
                map().getStatus().setPassCount(source.getPassCount());
                map().getStatus().setFailCount(source.getFailCount());
            }
        });

        List<Subject> subjects = new ArrayList<>();
        subjects.add(new Subject("Subject A", 10, 20));
        subjects.add(new Subject("Subject B", 8, 7));

        Page<Subject> page = new Page<>(subjects, 10);

        Type pageType = new TypeToken<PageModel<SubjectModel>>() {}.getType();
        PageModel<SubjectModel> pageModel = modelMapper.map(page, pageType);


DAO类-

public class PageModel<T> {

    @JsonProperty("items")
    private List<T> items;

    @JsonProperty("meta")
    private MetaModel meta;

    public PageModel() {

    }

    public PageModel(int current, int limit) {
         this.items = new ArrayList<>();
         this.meta = new MetaModel(current, limit);
    }

    @JsonProperty("items")
    public List<T> getItems() {
        return items;
    }

    @JsonProperty("items")
    public void setItems(List<T> items) {
        this.items = items;
    }

    @JsonProperty("meta")
    public MetaModel getMeta() {
        return meta;
    }

    @JsonProperty("meta")
    public void setMeta(MetaModel meta) {
        this.meta = meta;
    }

}
public class Page<T> {
    private List<T> items;
    private int count;

    public Page(List<T> items, int count) {
        if(items == null)
            throw new IllegalArgumentException("items can not be null");

        this.items = items;
        this.count = count;
    }

    public List<T> getItems() {
        return items;
    }

    public void setItems(List<T> items) {
        if(items == null)
            throw new IllegalArgumentException("items can not be null");

        this.items = items;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}
        ModelMapper modelMapper = new ModelMapper();

        modelMapper.getConfiguration()
                .setMatchingStrategy(MatchingStrategies.STRICT);

        modelMapper.addMappings(new PropertyMap<Page<?>, PageModel<?>>() {
            @Override
            protected void configure() {
                map().getMeta().setTotal(source.getCount());
            }
        });

        modelMapper.addMappings(new PropertyMap<Subject, SubjectModel>() {
            @Override
            protected void configure() {
                map().getStatus().setPassCount(source.getPassCount());
                map().getStatus().setFailCount(source.getFailCount());
            }
        });

        List<Subject> subjects = new ArrayList<>();
        subjects.add(new Subject("Subject A", 10, 20));
        subjects.add(new Subject("Subject B", 8, 7));

        Page<Subject> page = new Page<>(subjects, 10);

        Type pageType = new TypeToken<PageModel<SubjectModel>>() {}.getType();
        PageModel<SubjectModel> pageModel = modelMapper.map(page, pageType);

映射器逻辑-

public class PageModel<T> {

    @JsonProperty("items")
    private List<T> items;

    @JsonProperty("meta")
    private MetaModel meta;

    public PageModel() {

    }

    public PageModel(int current, int limit) {
         this.items = new ArrayList<>();
         this.meta = new MetaModel(current, limit);
    }

    @JsonProperty("items")
    public List<T> getItems() {
        return items;
    }

    @JsonProperty("items")
    public void setItems(List<T> items) {
        this.items = items;
    }

    @JsonProperty("meta")
    public MetaModel getMeta() {
        return meta;
    }

    @JsonProperty("meta")
    public void setMeta(MetaModel meta) {
        this.meta = meta;
    }

}
public class Page<T> {
    private List<T> items;
    private int count;

    public Page(List<T> items, int count) {
        if(items == null)
            throw new IllegalArgumentException("items can not be null");

        this.items = items;
        this.count = count;
    }

    public List<T> getItems() {
        return items;
    }

    public void setItems(List<T> items) {
        if(items == null)
            throw new IllegalArgumentException("items can not be null");

        this.items = items;
    }

    public int getCount() {
        return count;
    }

    public void setCount(int count) {
        this.count = count;
    }
}
        ModelMapper modelMapper = new ModelMapper();

        modelMapper.getConfiguration()
                .setMatchingStrategy(MatchingStrategies.STRICT);

        modelMapper.addMappings(new PropertyMap<Page<?>, PageModel<?>>() {
            @Override
            protected void configure() {
                map().getMeta().setTotal(source.getCount());
            }
        });

        modelMapper.addMappings(new PropertyMap<Subject, SubjectModel>() {
            @Override
            protected void configure() {
                map().getStatus().setPassCount(source.getPassCount());
                map().getStatus().setFailCount(source.getFailCount());
            }
        });

        List<Subject> subjects = new ArrayList<>();
        subjects.add(new Subject("Subject A", 10, 20));
        subjects.add(new Subject("Subject B", 8, 7));

        Page<Subject> page = new Page<>(subjects, 10);

        Type pageType = new TypeToken<PageModel<SubjectModel>>() {}.getType();
        PageModel<SubjectModel> pageModel = modelMapper.map(page, pageType);
ModelMapper ModelMapper=newmodelmapper();
modelMapper.getConfiguration()
.setMatchingStrategy(MatchingStrategies.STRICT);
modelMapper.addMappings(新属性映射>(){
@凌驾
受保护的void configure(){
map().getMeta().setTotal(source.getCount());
}
});
addMappings(新属性映射(){
@凌驾
受保护的void configure(){
map().getStatus().setPassCount(source.getPassCount());
map().getStatus().setFailCount(source.getFailCount());
}
});
列表主题=新建ArrayList();
添加(新主题(“主题A”,10,20));
添加(新主题(“主题B”,8,7));
第页=新页(主题,10);
类型pageType=newTypeToken(){}.getType();
PageModel PageModel=modelMapper.map(页面,页面类型);

ModelMapper似乎不起作用了,它给了我主题类项目而不是主题模型类项目的
pageModel
,我已经解决了这个问题:并将在本周末发布。 请看一下这是否解决了您的问题。谢谢。

解决了这个问题。感谢您的快速回复。:)