使用GORM链接数据库|青训营

55 阅读1分钟

gorm是一个GoLand写的,开发人员友好的ORM库。 GORM支持多种数据库连接,目前官方支持库有:MySQL,PostgreSQL、SQLite、SQLServer

数据库连接

连接MySQL数据库,需要引入 gorm 和mysql两个包: import ( "gorm.io/driver/mysql" "gorm.io/gorm" ) 同时连接mysql需要使用tcp套接字符串来连接,因此需要先构建套接字符串: dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) 需要再设置一下给连接对象设置空闲时的最大连接数、设置与数据库的最大打开连接数,每一个连接的生命周期等信息 sqlDB, err := db.DB() if err != nil { return err } sqlDB.SetMaxIdleConns(1000) sqlDB.SetMaxOpenConns(100000) sqlDB.SetConnMaxLifetime(-1)

自动迁移表

gorm还有一个强大的功能,就是自动迁移表功能 func InitDB(setting *mysqlConfig) error { var db *gorm.DB var err error url := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8mb4&parseTime=True&loc=Local", setting.User, setting.Password, setting.Host, setting.Port, setting.Database) setting.Url = url db, err = gorm.Open(mysql.Open(url), &gorm.Config{}) if err != nil { return err }

sqlDB, err := db.DB()
if err != nil {
	return err
}

sqlDB.SetMaxIdleConns(1000)
sqlDB.SetMaxOpenConns(100000)
sqlDB.SetConnMaxLifetime(-1)

db.AutoMigrate(&model.Admin{}, &model.Article{}, &model.ArticleData{}, &model.Attachment{}, &model.Category{})

DB = db

return nil

}

写入数据

category.go admin.go article.go attachment.go