GORM 配置

GORM 提供了可在初始化期间使用的配置

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

跳过默认事务

GORM 在事务中执行写操作(创建/更新/删除)以确保数据一致性,如果不需要,您可以在初始化期间禁用它

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

命名策略

GORM 允许用户通过覆盖默认的 NamingStrategy 来更改命名约定,该策略需要实现接口 Namer

type Namer interface {
TableName(table string) string
SchemaName(table string) string
ColumnName(table, column string) string
JoinTableName(table string) string
RelationshipFKName(Relationship) string
CheckerName(table, column string) string
IndexName(table, column string) string
}

默认的 NamingStrategy 也提供了一些选项,例如

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: "t_", // table name prefix, table for `User` would be `t_users`
SingularTable: true, // use singular table name, table for `User` would be `user` with this option enabled
NoLowerCase: true, // skip the snake_casing of names
NameReplacer: strings.NewReplacer("CID", "Cid"), // use name replacer to change struct/field name before convert it to db name
},
})

日志记录器

允许通过覆盖此选项来更改 GORM 的默认日志记录器,有关详细信息,请参阅日志记录器

NowFunc

更改创建新时间戳时要使用的函数

db, err := gorm.Open(sqlite.Open("gorm.db"), &gorm.Config{
NowFunc: func() time.Time {
return time.Now().Local()
},
})

空运行

生成 SQL 但不执行,可用于准备或测试生成的 SQL,有关详细信息,请参阅会话

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

预处理语句

PreparedStmt 在执行任何 SQL 时创建一个预处理语句,并缓存它们以加快将来的调用,有关详细信息,请参阅会话

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

禁用嵌套事务

在数据库事务中使用 Transaction 方法时,GORM 将使用 SavePoint(savedPointName)RollbackTo(savedPointName) 为您提供嵌套事务支持,您可以使用 DisableNestedTransaction 选项禁用它,有关详细信息,请参阅会话

允许全局更新

启用全局更新/删除,有关详细信息,请参阅会话

禁用自动 Ping

GORM 在初始化后自动 ping 数据库以检查数据库可用性,通过将其设置为 true 来禁用它

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

迁移时禁用外键约束

GORM 在 AutoMigrateCreateTable 时自动创建数据库外键约束,通过将其设置为 true 来禁用它,有关详细信息,请参阅迁移

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

铂金赞助商

黄金赞助商

铂金赞助商

黄金赞助商