在使用mapStrut中我们会遇到List<T>转List<R>
首先单纯的集合转换其实是很简单的
//实体类User
public class User{
//姓名
private String userName;
//性别
private String sex;
// getters and setters
}
//实体类People
public class People{
//姓名
private String userName;
//性别
private String sex;
// getters and setters
}
//MapStruct接口代码
import java.util.List;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface UserMst {
UserMst INSTANCE = (MembersListResDtoMst)Mappers.getMapper(MembersListResDtoMst.class);
List<People> toPeopleList(List<User> var1);
}
//调用代码
public toPeopleList(User user){
List<People> list = UserMst.INSTANCE.toPeopleList(user)
}
但是如果返回的sex是一个Integer,对应了一个枚举类,你需要通过枚举类取值再去做转换的时候就需要修改下了:
//实体类User
public class User{
//姓名
private String userName;
//性别
private Integer sex;
// getters and setters
}
//实体类People
public class People{
//姓名
private String userName;
//性别
private String sex;
// getters and setters
}
//枚举类
public enum sexEnum{
// 省略枚举类中代码
}
//MapStruct接口代码
import java.util.List;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface UserMst {
UserMst INSTANCE = (MembersListResDtoMst)Mappers.getMapper(MembersListResDtoMst.class);
@Mappings({
@Mapping(source = "sex", target = "sex" ,qualifiedByName = "updateSex"),
})
People map(User user)
@Named("updateSex")
public static String updatePrivateNetworkType(Integer sex) {
return sexEnum.getTypeName(sex);
}
List<People> toPeopleList(List<User> var1);
}
//调用代码
public toPeopleList(User user){
List<People> list = UserMst.INSTANCE.toPeopleList(user)
}
这样转化的List<People>中的sex值就会使枚举对应的”男“或者“女”了。