java实体类转换器
写VO类时,继承基础类,是最简单的vo类写法,但是在用mybatisplus时候,就不太好查询,通过这个转换器,可以 进行查询基础类,通过mybatisplus,在转换成VO类
基础实体类示例
@Data
@TableName("table_test")
public class Test{
private Integer id;
private String name;
}
vo类示例
@Data
@TableName("table_test")
public class TestVo extends Test{
private AAA aaa;
}
转换示例
Test test = (mybatisplus查询语句)
TestVo testvo = generalConvertor.convertor(test,TestVo.class);
转换器代码,
package com.zst.aim.config;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import java.util.TreeSet;
import javax.annotation.Resource;
import org.springframework.stereotype.Component;
import com.github.dozermapper.core.Mapper;
/**
* @Description:生成实体类
*/
@Component
public class GeneralConvertor {
@Resource
private Mapper mapper;
/**
* List 实体类 转换器
*
* @param source 原数据
* @param clz 转换类型
* @param <T>
* @param <S>
* @return
*/
public <T, S> List<T> convertor(List<S> source, Class<T> clz) {
if (source == null || source.size() == 0) {
return null;
}
List<T> map = new ArrayList<>();
for (S s : source) {
map.add(mapper.map(s, clz));
}
return map;
}
/**
* Set 实体类 深度转换器
*
* @param source 原数据
* @param clz 目标对象
* @param <T>
* @param <S>
* @return
*/
public <T, S> Set<T> convertor(Set<S> source, Class<T> clz) {
if (source == null || source.size() == 0) {
return null;
}
Set<T> set = new TreeSet<>();
for (S s : source) {
set.add(mapper.map(s, clz));
}
return set;
}
/**
* 实体类 深度转换器
*
* @param source
* @param clz
* @param <T>
* @param <S>
* @return
*/
public <T, S> T convertor(S source, Class<T> clz) {
if (source == null) {
return null;
}
return mapper.map(source, clz);
}
public void convertor(Object source, Object object) {
mapper.map(source, object);
}
public <T> void copyConvertor(T source, Object object) {
mapper.map(source, object);
}
}