0%

dto与dao

dto

dto数据传输对象(Data Transfer Object),是一种设计模式之间传输数据的软件应用系统。数据传输目标往往是数据访问对象从数据库中检索数据。数据传输对象与数据交互对象或数据访问对象之间的差异是一个以不具有任何行为除了存储和检索的数据(访问和存取器)。

在golang中目前我遇到是用于控制返回的字段,如:在User中由多个字段,我希望只返回NameTelephone

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package dto

import (
"gin_vue_bs/model"
)

//UserDto .
type UserDto struct {
Name string `json:"name"`
Telephone string `json:"telephone"`
}

//ToUserDto .
func ToUserDto(user model.User) UserDto {
return UserDto{
Name: user.Name,
Telephone: user.Telephone,
}
}
1
2
3
4
5
6
type User struct {
gorm.Model
Name string `gorm:"type:varchar(20);not null"`
Telephone string `gorm:"varchar(110;not null;unique"`
Password string `gorm:"size:255;not null"`
}
1
ctx.JSON(http.StatusOK, gin.H{"code": 200, "data": gin.H{"user": dto.ToUserDto(user.(model.User))}})

dao

dao就叫它数据访问接口吧。

举一个例子先,例如我们比较常见的 Service 层和 DAO 层的操作,Service 处理完逻辑之后,交给 DAO 层进行持久化,或者需要调用 DAO 层从持久化中获取一些必要的数据;在测试的时候,我们很多时候不希望真的持久化或者从持久化中获取数据,那么就会对 DAO 层进行一些 Mock。

还有深刻的理解,相关资料:

http://www.imooc.com/article/33236
https://www.cnblogs.com/makor/p/ut-in-go-lang.html