Golang Go语言中 初学:将数据库表转换为 struct,支持多 Tag

发布于 1周前 作者 sinazl 来自 Go语言

Golang Go语言中 初学:将数据库表转换为 struct,支持多 Tag

初学 Golang,想把数据库表结构转换为 go 的 struct,找了好几个不太符合自己的需求,于是动手撸了一个。

开源地址: https://github.com/Licoy/dbstruct

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提供了关于如何映射和验证字段的额外信息。

回到顶部