Skip to main content

GORM 配置

在初始化 GORM 时,你可以使用 gorm.Config 进行配置。

type Config struct {
SkipDefaultTransaction bool
NamingStrategy schema.Namer
FullSaveAssociations bool
Logger logger.Interface
NowFunc func() time.Time
DryRun bool
PrepareStmt bool
DisableAutomaticPing bool
DisableForeignKeyConstraintWhenMigrating bool
// ...
}

SkipDefaultTransaction

为了确保数据一致性,GORM 默认会在事务中执行单次写入操作。如果要跳过此操作以获得性能提升,可以将其设置为 true

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
SkipDefaultTransaction: true,
})

NamingStrategy

GORM 允许用户通过覆盖默认的 NamingStrategy 来更改命名约定。

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: "t_", // 表名前缀,如: t_users
SingularTable: true, // 使用单数表名,如: user
},
})

FullSaveAssociations

当创建或更新记录时,GORM 默认会保存关联。如果只想保存关联的引用(外键),可以将其设置为 false

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
FullSaveAssociations: false,
})

PrepareStmt

PrepareStmt 会在执行 SQL 时创建一个 prepared statement 并将其缓存以提高后续调用的速度。

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
PrepareStmt: true,
})