📌 GORM 核心配置项(gorm.Config
)
说明:这些配置是在初始化 gorm.DB
时传入的,控制 ORM 行为、性能、日志等。
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
// 配置项写在这里
})
🔧 常用配置项一览表
配置项 | 类型 | 默认值 | 作用 | 推荐 |
---|---|---|---|---|
Logger | logger.Interface | 开发模式日志 | 控制日志输出级别 | ✅ 生产环境设为 Silent |
PrepareStmt | bool | false | 缓存预编译语句 | ✅ 开启以提升性能 |
SkipDefaultTransaction | bool | false | 跳过默认事务 | ⚠️ 视业务逻辑启用 |
CreateBatchSize | int | 无限制 | 批量插入每批大小 | ✅ 大数据导入时设置 |
DisableForeignKeyConstraintWhenMigrating | bool | false | AutoMigrate 不加外键约束 | ⚠️ 仅测试环境使用 |
AllowGlobalUpdate | bool | false | 是否允许无 Where 更新 | ❌ 建议保持关闭 |
QueryFields | bool | false | 查询时强制列出所有字段 | ✅ 特定场景优化 |
NamingStrategy | schema.NamingStrategy | 默认复数形式 | 控制表名/列名映射 | ✅ 按需自定义 |
🔍 各配置项详解
1. Logger
- 类型:
logger.Interface
- 默认:开发模式输出 SQL 日志
- 推荐生产环境关闭或设为
Silent
newLogger := logger.New(
log.New(os.Stdout, "\r\n", log.LstdFlags),
logger.Config{
SlowThreshold: time.Second,
LogLevel: logger.Silent, // Silent / Error / Warn / Info
Colorful: false,
},
)
&gorm.Config{
Logger: newLogger,
}
2. PrepareStmt
- 类型:
bool
- 默认:
false
- 开启后缓存常用 SQL 语句,提高执行效率
&gorm.Config{
PrepareStmt: true,
}
✅ 建议开启,尤其在频繁执行相同结构的 SQL 时。
3. SkipDefaultTransaction
- 类型:
bool
- 默认:
false
- 禁用 GORM 默认的事务封装机制
&gorm.Config{
SkipDefaultTransaction: true,
}
⚠️ 注意:适用于高性能写入场景,但需要你自己处理事务一致性。
4. CreateBatchSize
- 类型:
int
- 默认:不限制
- 设置批量插入时每次提交的数据条数
&gorm.Config{
CreateBatchSize: 100,
}
✅ 推荐设置,特别是在大批量插入数据时,显著减少网络往返次数。
5. DisableForeignKeyConstraintWhenMigrating
- 类型:
bool
- 默认:
false
- 在 AutoMigrate 时不创建外键约束
&gorm.Config{
DisableForeignKeyConstraintWhenMigrating: true,
}
⚠️ 仅用于测试环境,避免迁移耗时;生产环境请保持关闭。
6. AllowGlobalUpdate
- 类型:
bool
- 默认:
false
- 允许不带 WHERE 条件的更新操作
&gorm.Config{
AllowGlobalUpdate: true,
}
❌ 极度危险,可能导致误删或误改数据,建议保持关闭。
7. QueryFields
- 类型:
bool
- 默认:
false
- 强制查询所有字段而非先查主键再加载
&gorm.Config{
QueryFields: true,
}
✅ 特定场景下优化性能,比如字段数量不多且数据量大时。
8. NamingStrategy
- 类型:
schema.NamingStrategy
- 默认:表名复数(如 User → users)
- 可用于统一命名风格或适配已有数据库
&gorm.Config{
NamingStrategy: schema.NamingStrategy{
TablePrefix: "t_",
SingularTable: true,
},
}
✅ 按项目规范设置,提升可维护性。
✅ 总结:关键配置推荐设置
配置项 | 推荐值 | 说明 |
---|---|---|
Logger | Silent | 生产环境必须关闭日志 |
PrepareStmt | true | 提升重复 SQL 执行效率 |
SkipDefaultTransaction | true | 视情况而定,提升写入性能 |
CreateBatchSize | 100~500 | 插入大数据时建议设置 |
DisableForeignKeyConstraintWhenMigrating | true | 测试环境可用 |
AllowGlobalUpdate | false | 建议关闭 |
QueryFields | true | 特定场景优化 |
NamingStrategy | 自定义 | 统一命名风格 |
如需进一步结合你的项目需求定制配置模板,也可以告诉我你的使用场景(如高并发写入、只读服务、批量导入等),我可以帮你优化配置。