项目的事前准备
首先,(新建文件夹,不是)咳咳,准备一台服务器,并安装好数据库mysql。使用xshell等ssh连接工具连接远程数据库,并且使用navicat等数据库可视化工具新建连接,连接远程数据库。具体操作可以参考我之前的教程。
初始化Go项目
新建一个文件夹,并新建main.go作为核心包文件。输入命令:
go mod init 你的项目名称
即可生成最基本的golang项目。 准备好项目文件目录,这里展示一下我的项目目录:
他们的作用大致如下:
- 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的一些主要用途:
- 简化数据库操作:GORM允许您将Go结构体映射到数据库表,并自动处理许多常见的数据库操作(如插入、更新、删除等)。这使得开发人员能够专注于业务逻辑,而不是编写繁琐的SQL查询。
- 类型安全:GORM在编译时检查您的代码,确保类型转换正确,从而避免潜在的运行时错误。
- 智能查询构建:GORM可以根据上下文自动生成合适的查询语句,提高性能并减少潜在的SQL注入风险。
- 预加载关联数据:通过使用GORM的预加载功能,您可以在查询结果中预先加载相关的数据,从而减少与数据库的交互次数。
- 支持多种数据库: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等工具连接数据库,右键选择新建数据库
创建好之后右键打开数据库即可。
配置数据库连接测试
在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中右键刷新数据库,即可看到,表已经自动创建完毕。
写在最后
这个项目是一个基于Vue3+element plus+Golang的一个聊天web软件,下一期我将帮助大家配置项目的初始参数以及最基本的路由配置。我是一个练习时长两年半的全栈新手练习生,喜欢就请多多为我投票吧。