Java 如何使用模型映射器将泛型类型映射到集合对象?
我试图使用表示DAO和模型类的库映射两种泛型类型- 模型类-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
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
,我已经解决了这个问题:并将在本周末发布。
请看一下这是否解决了您的问题。谢谢。解决了这个问题。感谢您的快速回复。:)