1. 安装 GORM
在开始使用 GORM 之前,需要先安装它的依赖。
安装 GORM 和驱动程序
以 MySQL 数据库为例,运行以下命令安装 GORM 和 MySQL 驱动:
1 2
| go get -u gorm.io/gorm go get -u gorm.io/driver/mysql
|
其他数据库驱动:
- PostgreSQL:
go get -u gorm.io/driver/postgres
- SQLite:
go get -u gorm.io/driver/sqlite
- SQL Server:
go get -u gorm.io/driver/sqlserver
2. 连接数据库
示例:连接 MySQL 数据库
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| package main
import ( "gorm.io/driver/mysql" "gorm.io/gorm" "log" )
func main() { dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { log.Fatalf("Failed to connect to database: %v", err) }
log.Println("Database connected successfully!") }
|
注意事项
- 替换
user
, password
和 dbname
为实际值。
- 参数
charset=utf8mb4
支持存储 Emoji 等特殊字符。
parseTime=True
允许解析时间字段。
3. 数据库连接池设置
GORM 使用 sql.DB
管理底层数据库连接,可以通过设置连接池优化性能。
示例:设置连接池
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| package main
import ( "database/sql" "gorm.io/driver/mysql" "gorm.io/gorm" "log" "time" )
func main() { dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { log.Fatalf("Failed to connect to database: %v", err) }
sqlDB, err := db.DB() if err != nil { log.Fatalf("Failed to get sql.DB: %v", err) }
sqlDB.SetMaxOpenConns(100) sqlDB.SetMaxIdleConns(10) sqlDB.SetConnMaxLifetime(30 * time.Minute)
log.Println("Database configured successfully!") }
|
参数说明
- SetMaxOpenConns:限制打开的连接数量,可以防止过多连接耗尽数据库资源。
- SetMaxIdleConns:保持空闲连接的数量,减少频繁创建和销毁连接的开销。
- SetConnMaxLifetime:控制连接的生命周期,防止长时间的连接被数据库服务器断开。
4. 数据库连接测试
为了确保配置正确,可以尝试执行一个简单的 SQL 查询:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| package main
import ( "gorm.io/driver/mysql" "gorm.io/gorm" "log" )
func main() { dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { log.Fatalf("Failed to connect to database: %v", err) }
sqlDB, _ := db.DB() if err := sqlDB.Ping(); err != nil { log.Fatalf("Database ping failed: %v", err) }
log.Println("Database ping successful!") }
|
5. 总结
GORM 的安装和配置非常简单,但正确设置连接池可以显著提升性能和稳定性:
- 安装所需的驱动程序,并配置连接字符串。
- 使用
gorm.Config
进行全局配置。
- 通过
sql.DB
对象设置连接池参数。