欢迎光临
我们一直在努力

Day20:AutoMapper 对象映射

一、今日学习目标

  • 分清 Entity / DTO / VO 到底是什么
  • 安装 + 配置 AutoMapper
  • 用 Profile 配置映射规则 Profile 完整用法
  • 把所有接口改成:不直接返回实体,统一返回 VO/DTO
  • 学会字段名不同、嵌套对象、列表的映射

  • 二、核心概念(极简版)

    1. 三个对象到底干嘛的?

    表格

    对象全称作用位置
    Entity 实体 对应数据库表 Domain
    DTO 数据传输对象 接收前端参数 Application
    VO 视图对象 返回给前端的数据 Application

    一句话:前端 → DTO → Service → Entity → Service → VO → 前端

    2. AutoMapper 干什么?

    自动把:

    • User → UserVO
    • UserCreateDto → User
    • List<User> → List<UserVO>

    不用再写:

    var vo = new UserVO();
    vo.Id = user.Id;
    vo.Name = user.Name;


    三、高频面试题 + 答案

    1. 为什么要用 AutoMapper?

    答案:

    • 减少重复赋值代码
    • 让业务代码更干净
    • 支持复杂类型、嵌套映射
    • 企业标准,提升开发效率

    2. DTO 和 VO 有什么区别?

    答案:

    • DTO:前端传给后端(入参)
    • VO:后端返回给前端(出参)
    • Entity:数据库实体,绝不直接返回给前端

    3. AutoMapper 映射规则是什么?

    答案:默认按字段名相同映射,不区分大小写:

    • User.Name → UserVO.Name
    • User.CreateTime → UserVO.CreateTime

    字段名不同可以用 ForMember 配置。

    4. 什么是 Profile?

    答案:统一存放所有映射规则的配置类,方便维护。

    5. 可以映射子对象吗?

    答案:可以,自动映射嵌套类,也可以手动配置。


    四、今日实战练习:所有接口使用 AutoMapper(必须完成)

    练习目标

    把你Day19 的所有用户接口全部升级:

  • Controller 不接收 Entity,只接收 DTO
  • Service 不返回 Entity,只返回 VO
  • 全部使用 AutoMapper 映射
  • 禁止任何手动 .Id=xx .Name=xx 赋值
  • 你必须创建这些类

    1. DTO(前端 → 后端)

    • UserCreateDto
    • UserUpdateDto
    • UserPageQueryDto
    • LoginDto

    2. VO(后端 → 前端)

    • UserVO
    • UserDetailVO(带角色)
    • RoleVO
    • PageVO 分页统一返回

    3. 映射配置

    • AutoMapperProfile:配置所有映射

    4. 改造全部接口

    • 新增:接收 UserCreateDto → 映射成 User
    • 查询:返回 UserVO / UserDetailVO
    • 分页:返回 PageVO<List<UserVO>>

    规范要求

    • Entity 绝不暴露到前端
    • 所有入参出参都用 DTO/VO
    • 映射全部交给 AutoMapper
    • Controller、Service 无手动赋值

    赞(0)
    未经允许不得转载:171主机测评 » Day20:AutoMapper 对象映射
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址