前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >gin博客项目复盘--02数据库的搭建

gin博客项目复盘--02数据库的搭建

作者头像
微客鸟窝
发布2022-11-07 14:48:21
4460
发布2022-11-07 14:48:21
举报
文章被收录于专栏:Go语言指北Go语言指北

我们在项目中通过使用 gorm 来连接数据库,进行CURD操作。 gorm 文档地址 :gorm.io/zh_CN/docs/

  1. 安装:
代码语言:javascript
复制
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
  1. 写模型

建立三个模型及一个 db入口文件:

  • 常用的字段(id,createdat等):使用 gorm.Model 结构体
  • 使用 gorm:"type:varchar(10);not null;default:''" 来约束字段
  • 外键:主键表字段 主键表 gorm:"forigenkey:外键表字段" 来设置
  1. db 入口文件

model/db.go

代码语言:javascript
复制
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)
}
  1. 最后在 main.go 函数中调用数据库初始化
代码语言:javascript
复制
package main

import "ginVue3blog/routes"

func main() {
 //引入路由
 routes.InitRouter()
  //数据库初始化
  model.InitDb()
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-06-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微客鸟窝 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档