写在前面
个人认为GORM 指南这个网站是相比较之下最为清晰的框架介绍
但是它在环境搭建阶段对于初学者而言不是很友好,尤其是使用mysql指令稍有不同,以及更新的方法和依赖问题都是很让人头疼的,而且这些报错并非逻辑上的,往往是网络端口,数据库创建等没有接触过的内容,因此我建议可以在学习使用增删改查的操作时看框架教程,配置环境使用以下的学习步骤:
-
首先,下载
mysql,以及三选一mysqlshell,navicat,dbreaver(个人感觉第二个的破解版手感是最丝滑的),对于初学一个东西,我认为可视化是最好的帮助和激励 -
在创建和连接数据库的时候,搜一下“Navicat使用快速入门教程”,对于数据库连接不成功的情况,往往是因为没有启动服务,这个在任务管理器->服务->
mysql90(或80),找到之后右键手动打开即可,简单学一下建表(增删改查都看一下也可以,大概十几分钟就搞定) -
之后,使用下面两个命令在项目中搭建
gorm环境go get -u gorm.io/gorm go get -u gorm.io/driver/mysql -
然后,按照下面的文件结构去添加文件夹和文件即可,由于版本的原因,我直接上传所有新增文件,并且以注释的形式去解释每部分的作用

文件及解析
dao.go
package dao
import (
"Ranking/config"
"Ranking/pkg/logger"
"gorm.io/driver/mysql" // 引入 MySQL 驱动
"gorm.io/gorm" // 引入 Gorm
"time"
)
var (
Db *gorm.DB
err error
)
func init() {
// 使用 gorm.Open 打开 MySQL 数据库连接
Db, err = gorm.Open(mysql.Open(config.Mysqldb), &gorm.Config{
})
if err != nil {
logger.Error(map[string]interface{
}{
"mysql connect error": err.Error()})
return // 连接失败,提前返回
}
// 获取底层的 sql.DB
sqlDB, err := Db.DB()
if err != nil {
logger.Error(map[string]interface{
}{
"get DB instance error": err.Error()})
return // 获取 DB 实例失败,提前返回
}
// 配置连接池参数
sqlDB.SetMaxIdleConns(10) // 设置最大空闲连接数
sqlDB.SetMaxOpenConns(100) // 设置最大打开连接数
sqlDB.SetConnMaxLifetime(time.Hour) // 设置连接的最大可重用时长
}
models包user.go
package models
import "Ranking/dao"
type User struct {
Id int
Username string
}
func (User) TableName() string {
return "user"
}
// GetUsersTest 根据用户ID获取用户信息
func GetUsersTest(id int) (User, error) {
var user User
//where在 SQL 中生成一个 WHERE 子句,以便查找满足条件的记录,?是占位符
//first方法用于查找单个记录,如果找到,则返回该记录,否则返回错误
err := dao.Db.Where("id =?", id).First(&user).Error
return user, err
}
controllers->user.go重写一个方法
func (u UserController) GetUserInfo(c *gin.Context) {
idStr := c.Param("id")
name := c.Param("name")
id, _ := strconv.Atoi(idStr)
user, _ := models.GetUsersTes

最低0.47元/天 解锁文章
655

被折叠的 条评论
为什么被折叠?



