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

简介: gorm 原来的版本已经废弃,新版本进行了迁移,地址:gorm.io/。本节主要讲解新版本。

我们在项目中通过使用 gorm 来连接数据库,进行CURD操作。

gorm 文档地址 : gorm.io/zh_CN/docs/

  1. 安装:
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
复制代码

特别注意:gorm 原来的版本已经废弃,新版本进行了迁移,地址:gorm.io/。本节主要讲解新版本。

  1. 写模型

我们在在 model 中建立三个模型及一个 db入口文件:

image.png

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

image.png

  1. 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)
}
复制代码
  1. 最后在 main.go 函数中调用数据库初始化
//...
model.InitDb()
//...


相关文章
|
1月前
|
存储 关系型数据库 MySQL
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB区别,适用场景
一个项目用5款数据库?MySQL、PostgreSQL、ClickHouse、MongoDB——特点、性能、扩展性、安全性、适用场景比较
|
16天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
28天前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
48 11
|
1月前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
137 10
|
1月前
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
|
1月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
36 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
23天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
56 3
Mysql(4)—数据库索引
|
9天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
45 2
|
12天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
53 4
|
17天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?