# gen-model **Repository Path**: zhd--zhd_admin/gen-model ## Basic Information - **Project Name**: gen-model - **Description**: GO模型生成 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-25 - **Last Updated**: 2026-01-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Gen-Model ### 安装 ```shell go env -w GOPRIVATE=gitee.com go get -u gitee.com/zhd--zhd_admin/gen-model ``` ### 配置文件 #### 文件位置 config/db.json ```json { "local": { "dialect": "mysql", "host": "127.0.0.1", "port": 3306, "user": "root", "password": "123456", "dbname": "shop", "max_idle_conns": 10, "max_open_conns": 100, "conn_max_lifetime": 1800, "slow_threshold": 1000, "charset": "utf8mb4", "log": { "type": "console", "level": "info", "file": "logs/db/local.log", "max_size": 2, "max_age": 30, "max_backups": 10, "compress": true } } } ``` ### 示例 ```go package main func main() { db := NewDBConn("test") // 自动更新时间和创建时间 autoUpdateTimeField := gen.FieldGORMTag("update_time", func(tag field.GormTag) field.GormTag { return field.GormTag{"column": []string{"update_time"}, "type": []string{"int unsigned"}, "autoUpdateTime": []string{}} }) autoCreateTimeField := gen.FieldGORMTag("create_time", func(tag field.GormTag) field.GormTag { return field.GormTag{"column": []string{"create_time"}, "type": []string{"int unsigned"}, "autoCreateTime": []string{}} }) fieldOpts := []gen.ModelOpt{autoCreateTimeField, autoUpdateTimeField} alls := service.Generator.GenerateAllTable(fieldOpts...) alls = model.ReplaceModel(alls, "work_user", getWorkUserModel(service.Generator)) service.Generator.ApplyBasic(alls...) service.Generator.Execute() } // 模型关联 func getWorkUserModel(g *gen.Generator) interface{} { work_actived_account := g.GenerateModel("work_actived_account") work_user := g.GenerateModel( "work_user", gen.FieldRelate(field.HasOne, "WorkActivedAccount", work_actived_account, &field.RelateConfig{ // RelateSlice: true, RelatePointer: true, GORMTag: field.GormTag{"foreignKey": []string{"corpid", "qy_userid"}, "references": []string{"corpid", "qy_userid"}}, }), ) return work_user } ``` ### 自定义json类型 ![img.png](img.png) ```go package ads_flow_stat_count import ( "database/sql/driver" "encoding/json" "errors" ) // 对json字段 wx_uv_hh 的定义 // WxUvHh *ads_flow_stat_count.WxPvHh `gorm:"column:wx_uv_hh;type:json" json:"wx_uv_hh"` type WxUvHh []Item type Item struct { Hh string `json:"hh"` Pv int `json:"pv"` } func (w WxUvHh) Value() (driver.Value, error) { j, err := json.Marshal(w) if err != nil { return nil, err } return j, nil } func (w *WxUvHh) Scan(src interface{}) error { source, ok := src.([]byte) if !ok { return errors.New("Type assertion .[]byte failed.") } err := json.Unmarshal(source, w) if err != nil { return err } return nil } ```