我们在项目中通过使用 gorm 来连接数据库,进行CURD操作。
gorm 文档地址 :gorm.io/zh_CN/docs/
1 . 安装:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
2 . 写模型
建立三个模型及一个 db入口文件:
gorm:"type:varchar(10);not null;default:''"
来约束字段gorm:"forigenkey:外键表字段"
来设置3 . db 入口文件
model/db.go
package model
import (
"fmt"
"ginVue3blog/utils"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
"os"
"time"
)
var (
db *gorm.DB
err error
)
func InitDb() {
dns := fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
utils.DbUser,
utils.DbPassWord,
utils.DbHost,
utils.DbPort,
utils.DbName,
)
db, err = gorm.Open(mysql.Open(dns), &gorm.Config{
// gorm日志模式:silent
Logger: logger.Default.LogMode(logger.Silent),
// 外键约束
DisableForeignKeyConstraintWhenMigrating: true,
// 禁用默认事务(提高运行速度)
SkipDefaultTransaction: true,
NamingStrategy: schema.NamingStrategy{
// 使用单数表名,启用该选项,此时,`User` 的表名应该是 `user`
SingularTable: true,
},
})
if err != nil {
fmt.Println("连接数据库失败,请检查参数:", err)
os.Exit(1)
} else {
fmt.Println("连接数据库成功")
}
// 迁移数据表,在没有数据表结构变更时候,建议注释不执行
_ = db.AutoMigrate(&User{}, &Article{}, &Category{})
sqlDB, _ := db.DB()
// SetMaxIdleCons 设置连接池中的最大闲置连接数。
sqlDB.SetMaxIdleConns(10)
// SetMaxOpenCons 设置数据库的最大连接数量。
sqlDB.SetMaxOpenConns(100)
// SetConnMaxLifetiment 设置连接的最大可复用时间。 不能大于gin框架的timeout时间
sqlDB.SetConnMaxLifetime(10 * time.Second)
}
4 . 最后在 main.go 函数中调用数据库初始化
package main
import "ginVue3blog/routes"
func main() {
//引入路由
routes.InitRouter()
//数据库初始化
model.InitDb()
}
Copyright© 2013-2020
All Rights Reserved 京ICP备2023019179号-8