宋子 发表于 2026-2-6 15:05:00

gorm使用gen自动生成模型和查询文件

项目使用的gin,整合的gorm,可以利用gen工具快速生成模型和查询文件
package database

import (
        "fmt"
        "sync"
        "time"

        "github.com/spf13/viper"
        "gorm.io/driver/mysql"
        "gorm.io/gen"
        "gorm.io/gorm"
)

var (
        instance *gorm.DB
        once   sync.Once
)

func Instance() *gorm.DB {
        once.Do(func() {
                var err error
                dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local",
                        viper.GetString("database.user"),
                        viper.GetString("database.pass"),
                        viper.GetString("database.host"),
                        viper.GetInt("database.port"),
                        viper.GetString("database.name"))
                instance, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
                if err != nil {
                        panic("数据库连接失败")
                }
        })

        if viper.GetBool("database.debug") {
                instance = instance.Debug()
        }

        generator := gen.NewGenerator(gen.Config{
                OutPath: "./app/dao",
                Mode: gen.WithDefaultQuery | gen.WithQueryInterface,
        })
        generator.UseDB(instance)
    // 非常重要,不加不生成文件!
        generator.ApplyBasic(generator.GenerateAllTable()...)
        generator.Execute()
        db, _ := instance.DB()
        db.SetMaxIdleConns(10)
        db.SetMaxOpenConns(100)
        db.SetConnMaxLifetime(time.Hour)
        db.SetConnMaxIdleTime(30 * time.Minute)
        return instance
}需要注意以下几点:

[*]如果你想定义model目录的路径,目前只支持绝对路径(如写成./app/models这样的相对路径是不行的)或者通过设置OutPath和ModelPkgPath,可以实现自定义模型路径
[*]model生成位置:取OutPath路径中的目录(如OutPath是./app/dao,则目录是./app),再拼接上ModelPkgPath(如不设置ModelPkgPath,默认就叫model),拼接后最终model会生成在./app/model中
[*]generator.ApplyBasic(generator.GenerateAllTable()...)必须有这句,否则不生成任何model和query文件

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

昆拗干 发表于 2026-2-7 07:47:26

yyds。多谢分享

万俟谷雪 发表于 2026-2-7 10:31:22

感谢分享,学习下。

萨瑞饨 发表于 2026-2-9 05:50:06

谢谢分享,试用一下

阜逐忍 发表于 2026-2-9 12:42:21

谢谢楼主提供!

史穹逊 发表于 2026-2-9 19:44:57

过来提前占个楼

瘴锲如 发表于 2026-2-10 01:15:01

新版吗?好像是停更了吧。

崔瑜然 发表于 2026-2-10 05:28:35

yyds。多谢分享

慷规扣 发表于 2026-2-11 09:30:40

鼓励转贴优秀软件安全工具和文档!

艾曼语 发表于 2026-2-13 14:46:09

感谢分享

颛孙中 发表于 2026-2-16 11:29:27

东西不错很实用谢谢分享

喜及眩 发表于 2026-2-24 03:22:46

热心回复!

釉她 发表于 2026-2-26 06:03:02

鼓励转贴优秀软件安全工具和文档!

庇床铍 发表于 2026-2-27 08:06:20

新版吗?好像是停更了吧。

丧血槌 发表于 2026-3-4 20:35:01

分享、互助 让互联网精神温暖你我

骆贵 发表于 2026-3-8 08:50:49

yyds。多谢分享

敖雨燕 发表于 2026-3-9 05:13:23

这个有用。

卜笑 发表于 2026-3-11 08:47:20

懂技术并乐意极积无私分享的人越来越少。珍惜
页: [1]
查看完整版本: gorm使用gen自动生成模型和查询文件