从零开始的IM聊天系统(一):测试数据库

530 阅读4分钟

项目的事前准备

首先,(新建文件夹,不是)咳咳,准备一台服务器,并安装好数据库mysql。使用xshell等ssh连接工具连接远程数据库,并且使用navicat等数据库可视化工具新建连接,连接远程数据库。具体操作可以参考我之前的教程。

初始化Go项目

新建一个文件夹,并新建main.go作为核心包文件。输入命令:

go mod init 你的项目名称

即可生成最基本的golang项目。 准备好项目文件目录,这里展示一下我的项目目录:

image.png

他们的作用大致如下:

  • config: 存放一些基本设置,如初始化数据库连接所需参数。
  • models: 存放数据相关的结构体和方法。
  • router: 存放初始化路由的方法
  • service: 存放处理路由返回数据的方法
  • sql: 存放数据库相关的方法
  • test: 存放测试相关代码
  • utils: 存放工具函数,例如初始化config中的配置的方法

构建用户数据

在models文件夹中新建user_basic.go文件,用来存放用户数据。

package models

import (
   "fmt"
   "gorm.io/gorm"
)

type UserBasic struct {
   gorm.Model
   Name          string `gorm:"column:name" json:"name"`
   Password      string `gorm:"column:password" json:"password"`
   Phone         string `gorm:"column:phone" json:"phone"`
   Email         string `gorm:"column:email" json:"email"`
   Identity      string `gorm:"column:identity" json:"identity"`
   ClientIp      string `gorm:"column:client_ip" json:"client_ip"`
   ClientPort    string `gorm:"column:client_port" json:"client_port"`
   LoginTime     uint64 `gorm:"column:login_time" json:"login_time"`
   HeartbeatTime uint64 `gorm:"column:heartbeat_time" json:"heartbeat_time"`
   LoginOutTime  uint64 `gorm:"column:login_out_time" json:"login_out_time"`
   IsLogout      bool   `gorm:"column:is_logout" json:"is_logout"`
   DeviceInfo    string `gorm:"column:device_info" json:"device_info"`
}

GORM是一个用于Go语言的开源对象关系映射(ORM)库,它简化了与关系型数据库的交互。使用GORM,您可以更轻松地执行常见的CRUD(创建、读取、更新和删除)操作,而无需编写大量的SQL查询。

以下是GORM的一些主要用途:

  1. 简化数据库操作:GORM允许您将Go结构体映射到数据库表,并自动处理许多常见的数据库操作(如插入、更新、删除等)。这使得开发人员能够专注于业务逻辑,而不是编写繁琐的SQL查询。
  2. 类型安全:GORM在编译时检查您的代码,确保类型转换正确,从而避免潜在的运行时错误。
  3. 智能查询构建:GORM可以根据上下文自动生成合适的查询语句,提高性能并减少潜在的SQL注入风险。
  4. 预加载关联数据:通过使用GORM的预加载功能,您可以在查询结果中预先加载相关的数据,从而减少与数据库的交互次数。
  5. 支持多种数据库:GORM支持多种主流数据库,包括MySQL、PostgreSQL、SQLite和Microsoft SQL Server等。

运行命令:

    go get -u gorm.io/gorm
    go get -u gorm.io/driver/mysql

即可下载gorm包以及对应的mysql数据库包。

构建测试代码

接下来,我们通过一些代码测试gorm包的功能,之前我们已经编写了用户参数结构体。下面我们用gorm新建一张用户表:

新建数据库

使用Navicat等工具连接数据库,右键选择新建数据库

image.png

创建好之后右键打开数据库即可。

配置数据库连接测试

在test文件夹下新建测试文件test_gorm.go文件 输入以下代码:

package main

import (
   "fmt"
   "ginchat/models"
   "gorm.io/driver/mysql"
   "gorm.io/gorm"
)

func main() {
   db, err := gorm.Open(mysql.Open("用户名:密码@tcp(数据库公网地址:3306)/ginchat?charset=utf8mb4&parseTime=True&loc=Local"), &gorm.Config{})
   if err != nil {
      panic("failed to connect database")
   }

   // 迁移 schema
   db.AutoMigrate(&models.UserBasic{})

   // Create
   user := &models.UserBasic{}
   user.Name = "一只小菜狗"
   db.Create(user)

   // Read
   fmt.Println(db.First(user, 1)) // 根据整型主键查找
   //db.First(user, "code = ?", "D42") // 查找 code 字段值为 D42 的记录

   // Update - 将 product 的 price 更新为 200
   db.Model(user).Update("Password", "343527")

其中,用户名一般为root,密码为数据库密码,地址为服务器公网地址,3306为默认mysql的端口号,需要自己在服务器的控制台的防火墙至手动配置。 运行test_gorm.go文件,运行成功后,在navicat中右键刷新数据库,即可看到,表已经自动创建完毕。

image.png

写在最后

这个项目是一个基于Vue3+element plus+Golang的一个聊天web软件,下一期我将帮助大家配置项目的初始参数以及最基本的路由配置。我是一个练习时长两年半的全栈新手练习生,喜欢就请多多为我投票吧。