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

这有帮助吗?

  1. 精简版领域驱动

领域层之仓储

形态上就是一个接口定义

type IUserRepo interface {
   FindById(IModel) error
   FindByName(IModel) error
   SaveUser(IModel) error
   UpdateUser(IModel) error
   DeleteUser(IModel) error

}

具体实现在其它层实现

小伙伴要想了,为啥要这么做?直接调Gorm直接干不完事了么?

确实,小项目或私活这样是可以的。

接下来举个栗子:

譬如做项目,如果用的是直接调用ORM。部门有个业务非常熟悉的人,可以写出很屌的业务代码。 但是 此时客户突然说数据库不能用mysql,要用sqlserver.(有的同学可能会说ORM支持数据库无缝切换的,那亲,你就太年轻了~~~)

结果,这个 “业务非常熟悉的人“ 就得去学Sqlserver ,项目进度就要拖后。

而用了仓储后,他只要把接口定义好。然后“自说自话”的写业务代码就可以了。然后可以让其他会sqlserver的员工 来写接口实现。

从而实现了业务和数据持久化的解耦,从一定程度来说也是 “员工解耦”

上一页领域层之值对象下一页领域层之聚合

最后更新于4年前

这有帮助吗?