美文网首页
golang db转struct

golang db转struct

作者: 夜空最亮的9星 | 来源:发表于2023-12-24 17:35 被阅读0次

安装

go get -u gorm.io/gen 

快速开始

mysql db to struct



import (
    //"gorm.io/driver/mysql"
    "gorm.io/driver/postgres"
    "gorm.io/gen"
    "gorm.io/gorm"
    "testing"
)

// $ gen --connstr "root:Ab123456@(192.168.1.216:3306)/app_db?&parseTime=True" --database app_db --json --gorm --guregu --rest


func Test_MysqlDB(t *testing.T) {
    g := gen.NewGenerator(gen.Config{
        OutPath: "../query",
        //Mode:    gen.WithDefaultQuery, // generate mode
        //Mode:    gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode
    })


    gormdb, _ := gorm.Open(mysql.Open("root:Ab123456@(192.168.0.199:3307)/guan?charset=utf8mb4&parseTime=True&loc=Local"))
    g.UseDB(gormdb) // reuse your gorm db

    g.ApplyBasic(
        // Generate structs from all tables of current database
        g.GenerateAllTable()...,
    )
    // Generate the code
    g.Execute()
}


postgres db to struct



import (
    "gorm.io/driver/postgres"
    "gorm.io/gen"
    "gorm.io/gorm"
    "testing"
)

// $ gen --connstr "root:Ab123456@(192.168.0.199:3307)/guan?&parseTime=True" --database guan --json --gorm --guregu --rest
//goctl model mysql datasource -url="root:Ab123456@tcp(192.168.0.199:3307)/guan" -table="books"  -dir="./model1"

func Test_PG(t *testing.T) {
    g := gen.NewGenerator(gen.Config{
        OutPath: "../query",
        Mode:    gen.WithoutContext | gen.WithDefaultQuery | gen.WithQueryInterface, // generate mode
    })

    dsn := "host=192.168.0.207 user=postgres password=123456 dbname=postgres port=5437 sslmode=disable TimeZone=Asia/Shanghai"
    gormdb, _ := gorm.Open(postgres.Open(dsn), &gorm.Config{})
    g.UseDB(gormdb) // reuse your gorm db

    g.ApplyBasic(
        // Generate structs from all tables of current database
        g.GenerateAllTable()...,
    )
    // Generate the code
    g.Execute()
}

执行后,会在当前目录下生成两个文件夹:model , query

model:生成的struct文件

query: CRUP相关操作的方法


go zero model的使用

文档:
https://github.com/tal-tech/zero-doc/blob/main/doc/goctl-model-sql.md

myslq生成

goctl model mysql datasource -url="root:Ab123456@tcp(192.168.0.199:3307)/db_zeromicro" -table="books"  -dir="./model"

pg生成

goctl model pg datasource -url="postgres://postgres:Ab123456@192.168.0.199/db_zeromicro?sslmode=disable" -table="*"  -dir="./pg_model"

参考连接:

Gen Guide : https://gorm.io/zh_CN/gen/index.html

goctl使用 : https://www.jianshu.com/p/5e1718fa37f2

github:https://github.com/go-gorm/gen

相关文章

网友评论

      本文标题:golang db转struct

      本文链接:https://www.haomeiwen.com/subject/mlshndtx.html