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,
})