通过结构体名去映射每个表的话,难道是有一个"注册"结构体的操作?不然的话是怎么找到项目中与表名对应的结构体的?
package model
import (
"github.com/jinzhu/gorm"
)
type ExaFileUploadAndDownload struct {
gorm.Model
Name string `json:"name" gorm:"comment:'文件名'"`
Url string `json:"url" gorm:"comment:'文件地址'"`
Tag string `json:"tag" gorm:"comment:'文件标签'"`
Key string `json:"key" gorm:"comment:'编号'"`
}
}
1
coderxy 2020-08-20 11:01:51 +08:00
gorm:"comment:'文件名'" 就是这个起作用, 用反射获取 tag 的内容。然后一一对应
|
2
pwli 2020-08-20 11:23:29 +08:00
可以给结构体写个 TableName()方法返回对应的表名,如果未定义该方法,框架可以使用默认映射策略,如:ExaFileUploadAndDownload -> exa_file_upload_and_download
|
3
mcfog 2020-08-20 11:44:49 +08:00
很多玩法,可以注册用反射解决,可以生成代码解决,也可以直接不解决,让用户 new 出来当参数传进来
|
4
Leigg 2020-08-20 12:11:00 +08:00 via Android
多了解 go 反射
|
5
labulaka521 2020-08-20 12:25:16 +08:00
reflect
|
6
tikazyq 2020-08-20 17:27:48 +08:00
反射
|
7
chengxiao 2020-08-20 17:52:47 +08:00
func (ExaFileUploadAndDownload) TableName() string {
return "表名" } |
8
wangyzj 2020-08-20 22:40:49 +08:00
我看代码里面写的是反射方式
|
9
jessun1990 2020-08-20 22:43:14 +08:00 1
|