Golang Go语言中 初学:将数据库表转换为 struct,支持多 Tag
Golang Go语言中 初学:将数据库表转换为 struct,支持多 Tag
初学 Golang,想把数据库表结构转换为 go 的 struct,找了好几个不太符合自己的需求,于是动手撸了一个。
3 回复
看看 goframe
更多关于Golang Go语言中 初学:将数据库表转换为 struct,支持多 Tag的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html
高度相似的一堆,以前见过不少。
https://github.com/gohouse/converter
在Go语言中,将数据库表转换为结构体(struct)并支持多Tag,通常用于ORM(对象关系映射)框架,如GORM或SQLBoiler。这些框架可以帮助你自动映射数据库表到Go结构体,并支持通过Tag定义额外的信息,如字段类型、约束、JSON序列化等。
以下是一个基本示例,展示了如何使用GORM和Tag来定义结构体:
package main
import (
"gorm.io/driver/sqlite"
"gorm.io/gorm"
)
type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"size:100" json:"user_name"`
Email string `gorm:"uniqueIndex;not null" json:"email_address"`
CreatedAt time.Time
UpdatedAt time.Time
}
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{})
if err != nil {
panic("failed to connect database")
}
// 自动迁移模式
db.AutoMigrate(&User{})
// 创建
db.Create(&User{Name: "John", Email: "john@example.com"})
// 查询
var user User
db.First(&user, 1) // 查找主键为1的用户
println(user.Name) // 输出: John
}
在这个例子中,User
结构体使用了多个Tag来定义字段的属性,如gorm:"primaryKey"
、gorm:"size:100"
、gorm:"uniqueIndex;not null"
以及json:"user_name"
。这些Tag为GORM提供了关于如何映射和验证字段的额外信息。