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——特点、性能、扩展性、安全性、适用场景比较
|
25天前
|
SQL JavaScript 关系型数据库
node博客小项目:接口开发、连接mysql数据库
【10月更文挑战第14天】node博客小项目:接口开发、连接mysql数据库
|
1月前
|
SQL 关系型数据库 MySQL
Go语言项目高效对接SQL数据库:实践技巧与方法
在Go语言项目中,与SQL数据库进行对接是一项基础且重要的任务
54 11
|
1月前
|
Java 关系型数据库 数据库连接
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第3天】Spring Boot项目中数据库连接问题可能源于配置错误或依赖缺失。YAML配置文件的格式不正确,如缩进错误,会导致解析失败;而数据库驱动不匹配、连接字符串或认证信息错误同样引发连接异常。解决方法包括检查并修正YAML格式,确认配置属性无误,以及添加正确的数据库驱动依赖。利用日志记录和异常信息分析可辅助问题排查。
177 10
|
1月前
|
Java 关系型数据库 MySQL
SpringBoot项目使用yml文件链接数据库异常
【10月更文挑战第4天】本文分析了Spring Boot应用在连接数据库时可能遇到的问题及其解决方案。主要从四个方面探讨:配置文件格式错误、依赖缺失或版本不兼容、数据库服务问题、配置属性未正确注入。针对这些问题,提供了详细的检查方法和调试技巧,如检查YAML格式、验证依赖版本、确认数据库服务状态及用户权限,并通过日志和断点调试定位问题。
|
1月前
|
前端开发 Java 数据库连接
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
本文是一份全面的表白墙/留言墙项目教程,使用SpringBoot + MyBatis技术栈和MySQL数据库开发,涵盖了项目前后端开发、数据库配置、代码实现和运行的详细步骤。
42 0
表白墙/留言墙 —— 中级SpringBoot项目,MyBatis技术栈MySQL数据库开发,练手项目前后端开发(带完整源码) 全方位全步骤手把手教学
|
8天前
|
SQL 关系型数据库 MySQL
go语言数据库中mysql驱动安装
【11月更文挑战第2天】
23 4
|
6天前
|
SQL 关系型数据库 MySQL
12 PHP配置数据库MySQL
路老师分享了PHP操作MySQL数据库的方法,包括安装并连接MySQL服务器、选择数据库、执行SQL语句(如插入、更新、删除和查询),以及将结果集返回到数组。通过具体示例代码,详细介绍了每一步的操作流程,帮助读者快速入门PHP与MySQL的交互。
19 1
|
15天前
|
监控 关系型数据库 MySQL
数据库优化:MySQL索引策略与查询性能调优实战
【10月更文挑战第27天】本文深入探讨了MySQL的索引策略和查询性能调优技巧。通过介绍B-Tree索引、哈希索引和全文索引等不同类型,以及如何创建和维护索引,结合实战案例分析查询执行计划,帮助读者掌握提升查询性能的方法。定期优化索引和调整查询语句是提高数据库性能的关键。
81 1
|
17天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
59 2