此文档用于简单记述!!!
详情请看官方文档
官方文档:https://automapper.netlify.app/docs/usages/init/create-map
Demo地址:https://codesandbox.io/s/automapper-demo-latest-forked-qu8xl?file=/src/index.ts
安装依赖 :
npm install @nartc/automapper
npm install --save reflect-metadata
使用步骤:
1、在文件中引用插件
import { Mapper, AutoMapper, mapFrom, ProfileBase, mapWith, ignore } from '@nartc/automapper'import 'reflect-metadata';
2、给需要映射的字段添加@AutoMap()
export class CustomShowScopeResponse { @AutoMap() targetId!: string; @AutoMap() targetName!: string; } export class BaseData { @AutoMap() id: string; @AutoMap() name: string; }
3、配置关系
1)先通过 createMap 创建两个实体之间的关联关系,createMap(数据源类型 , 转换后类型)
2)通过 forMember 创建两个字段之间的关联关系,forMember(指向类型字段 ,mapFrom(数据来源字段))
export class CustomShowScopeProfile extends ProfileBase { constructor(mapper: AutoMapper) { super(); mapper .createMap(CustomShowScopeResponse, BaseData) .forMember( u => u.id, mapFrom(t => t.targetId), ) .forMember( u => u.name, mapFrom(t => t.targetName), ); } }若两个类之间需互相映射的字段名相同,则只需在实体字段上添加 @AutoMap() 即可,无需再专门去声明两个字段之间的关系
4、在全局添加关系配置
Mapper.addProfile(CustomShowScopeProfile);
5、获取转换对象
1)如果是实例化对象,那么可直接如下方式获取转换对象
const a = new CustomShowScopeResponse(); a.targetId = '11'; a.targetName = '22'; const ret = Mapper.map(data.customShowScope, BaseData);
2)如果非实例化对象,需要在map时声明源数据类型获取
const ret = Mapper.map(data.customShowScope[0], BaseData, CustomShowScopeResponse);
3)数组对象可用mapArray获取,但同样需要声明源数据类型
const ret = Mapper.mapArray(data.customShowScope, BaseData, CustomShowScopeResponse);
注:如果配置文件跟使用文件不是在同一个文件,那么需要在使用的那个文件中引用配置文件,否则关系配置不生效
实例:
1、字段类型为对象
1)在所需映射字段声明类型
2)在配置文件中建立关系
这个时候就不用mapFrom,而是用mapWith了,
.forMember( 数据源字段 , mapWith(数据源类型 , 指向字段))
2.在映射时忽略某个字段
通过 ignore() 表明忽略此字段来源