goft
  • gin脚手架使用文档
  • 所需环境
  • 建议的目录结构
  • 配置
  • 最简单的启动代码
  • 出错跟踪
  • 自定义错误展示
  • 覆盖系统内置异常处理
  • 路由
    • 路由写在一个文件里
    • 常规设置
  • 控制器
    • 控制器形式
    • 控制器方法
    • 控制器方法不想返回值
    • 输出JSON
    • 获取请求对象
  • 全局中间件
    • 基本定义
    • 注册中间件
    • 示例1:判断token参数
    • 示例2:修改响应内容
    • 跨域中间件
  • 路由级中间件
    • 基本定义
    • 示例:参数验证和业务分离
  • 依赖注入
    • 基本定义
    • 注册依赖配置
    • 基本使用
    • 注入Gorm和XOrm
  • 精简版领域驱动
    • 基本说明和概念
    • 基本分层
    • 领域层
    • 领域层之实体
    • 领域层之值对象
    • 领域层之仓储
    • 领域层之聚合
    • 领域服务层
    • 应用层(application)
    • 应用层之DTO
    • DTO和实体映射
    • 应用层之应用服务层
    • 代码落地
由 GitBook 提供支持
在本页

这有帮助吗?

  1. 精简版领域驱动

应用层之DTO

DTO(Data Transfer Object) 术语叫做数据传输对象

其实很好理解,传统的开发很多同学会把实体直接用JSON输出。

那么问题来了,以用户实体为例:

type UserModel struct {
   UserId int `gorm:"column:user_id;primary_key;auto_increment" json:"user_id"  xorm:"'user_id'"`
   UserName string `gorm:"column:user_name" json:"user_name" xorm:"'user_name'"`
   UserPwd string `gorm:"column:user_pwd" json:"-" xorm:"'user_pwd'"`
}

难道我们直接把用户密码也显示出去?

可能有的同学会说 取到值后手工把UserPwd清掉完事。

-------也不是不可以,但是就没逼格了

所以我们需要专门有个 对象用于显示用户信息

type SimpleUserInfo struct {
   Id     int    `json:"id"`
   Name   string `json:"name"`
   City string `json:"city"`
   QQ string `json:"qq"`
}

取到值后,用手工赋值或反射的方式转换。具体用不用反射根据场景定

上一页应用层(application)下一页DTO和实体映射

最后更新于4年前

这有帮助吗?