苏州培训网站建设,网站后门清除,网站获取访问者qq,网站双倍浮动MapStruct最详细的使用教程#xff0c;别在用BeanUtils.copyProperties ()
mapstruct使用和详解 项目背景
之前查看网上别人写的文章#xff0c;很多都提到了BeanUtils(org.springframework.beans) 利用反射性能比较差。大家都推荐使用 MapStruct。因为这个组件使用 Java 原…MapStruct最详细的使用教程别在用BeanUtils.copyProperties ()
mapstruct使用和详解 项目背景
之前查看网上别人写的文章很多都提到了BeanUtils(org.springframework.beans) 利用反射性能比较差。大家都推荐使用 MapStruct。因为这个组件使用 Java 原生的 setXxx方法会自动生成相关代码。
代码使用
引入依赖
dependencygroupIdorg.mapstruct/groupIdartifactIdmapstruct/artifactIdversion1.4.1.Final/version
/dependency
dependencygroupIdorg.mapstruct/groupIdartifactIdmapstruct-processor/artifactIdversion1.4.1.Final/version
/dependency这里使用的是 1.4.1.Final 版本1.3.1 idea会提示包找不到
编写Mapper告诉 MapStruct 转换前后的类型
import org.mapstruct.factory.Mappers;
import org.mapstruct.Mapper;import java.util.List;Mapper
public interface xxxConvert{xxxConvert INSTANCE Mappers.getMapper(xxxConvert.class);/*** 将req转换为entity*/Entity convert2Entity(Req req);/*** 将entity列表转换为resp列表*/ListResp convertPageList(ListEntity list);/*** 将entity转换为dto*/Dto convert2Dto(Entity entity);
}注意 Mapper 是用 MapStruct 依赖(org.mapstruct.Mapper)的不要和 MyBatis 的弄混。
点击编译后MapStruct 就会在 target 目录下生成 实现类 Generated(value org.mapstruct.ap.MappingProcessor,date 2024-02-01T15:17:250800,comments version: 1.4.1.Final, compiler: javac, environment: Java 1.8.0_351 (Oracle Corporation)
)
public class XxxConvertImpl implements XxxConvert {Overridepublic Entity convert2Entity(Req req) {if ( req null ) {return null;}Entity entity new Entity();entity.setId( req.getId() );entity.setBaseErpCode( req.getBaseErpCode() );//设置相关字段...return partBase;}Overridepublic ListResp convertPageList(ListEntity list) {if ( list null ) {return null;}ListResp list1 new ArrayListResp( list.size() );for ( Entity partBase : list ) {list1.add( partBaseToPartBasePageResp( entity ) );}return list1;}Overridepublic Dto convert2Dto(Entity entity) {if ( base null ) {return null;}//具体参考上面代码return partBaseDto;}protected Resp partBaseToPartBasePageResp(Entity entity) {if ( entity null ) {return null;}//具体参考上面代码return partBasePageResp;}
}结论
通过使用 MapStruct 工具减少使用反射的次数同时极大提升代码可读性。