gradle 依赖
api 'org.mapstruct:mapstruct:1.4.2.Final'
api 'org.mapstruct:mapstruct-processor:1.4.2.Final'
testAnnotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.4.2.Final'
创建mapper
import com.vguang.mapper.entity.UserEntity;
import com.vguang.mapper.model.UserInsertVm;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.ReportingPolicy;
import org.mapstruct.factory.Mappers;
@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface UserMapper {
UserMapper INSTANCE = Mappers.getMapper(UserMapper.class);
/**
* 状态
*
* @param so
* @return
*/
//source 为传入数据 target为被赋值的数据
//灵活的字段映射,定制映射的规则
@Mapping(source = "avatar",target = "head")
@Mapping(source = "code",target = "test")
UserInsertVm test(UserEntity so);
}
使用方法
public static void main(String[] args) {
UserEntity userEntity=new UserEntity("1","2","3","4","5","code","头像");
UserInsertVm test = UserMapper.INSTANCE.test(userEntity);
System.err.println(test);
}
会自动生成一个mapperimpl
import com.vguang.mapper.entity.UserEntity;
import com.vguang.mapper.model.UserInsertVm;
import javax.annotation.Generated;
@Generated(
value = "org.mapstruct.ap.MappingProcessor",
date = "2022-03-18T10:17:10+0800",
comments = "version: 1.4.2.Final, compiler: IncrementalProcessingEnvironment from gradle-language-java-7.4.jar, environment: Java 1.8.0_312 (Amazon.com Inc.)"
)
public class UserMapperImpl implements UserMapper {
@Override
public UserInsertVm test(UserEntity so) {
if ( so == null ) {
return null;
}
UserInsertVm userInsertVm = new UserInsertVm();
userInsertVm.setHead( so.getAvatar() );
userInsertVm.setTest( so.getCode() );
userInsertVm.setTenantId( so.getTenantId() );
userInsertVm.setAccount( so.getAccount() );
userInsertVm.setIdCard( so.getIdCard() );
userInsertVm.setCharacterData( so.getCharacterData() );
userInsertVm.setEmail( so.getEmail() );
return userInsertVm;
}
}