golang db转struct
2023-12-24 本文已影响0人
夜空最亮的9星
安装
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