golang从入门到通天—数据库操作(gorm框架使用)(最简单最详细的golang学习笔记)

这里是阳明Coding ,最近找到了一份golang开发的实习,因此开始更新一些golang的技术内容。这一次带来的是golang的orm框架------gorm的教学内容。

gorm官网地址:gorm官网

gorm是什么?

GORM 是 Go 语言中最流行的 ORM(Object-Relational Mapping,对象关系映射) 框架。

GORM = Go + ORM

  • Go:Go 语言

  • ORM:对象关系映射,将数据库表映射为 Go 的结构体(struct)

golang的orm框架还是比较丰富的的,没有出现非常垄断的框架。这里主要是讲述gorm框架的使用的例子。gorm框架是使用比较多的,其他orm框架后面有空可以继续更新一下。

目录

数据库sql

创建gorm.go

Service类

main方法

输出结果


gorm的使用流程:创建gorm.go文件------>初始化GormDB *gorm.DB------>service调用

数据库sql

这里为提供了测试的sql,只需要复制粘贴一下,创建数据库,插入数据即可。不用自己再去麻烦填入数据

Go 复制代码
CREATE TABLE `users` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '用户ID',
  `username` varchar(50) NOT NULL COMMENT '用户名',
  `email` varchar(100) NOT NULL COMMENT '邮箱',
  `password` varchar(255) NOT NULL COMMENT '密码(存储加密后的)',
  `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `uk_username` (`username`),
  UNIQUE KEY `uk_email` (`email`),
  KEY `idx_username` (`username`),
  KEY `idx_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';


INSERT INTO users (username, email, password) VALUES
('alice_smith', 'alice.smith@example.com', 'hashed_password_123'),
('bob_johnson', 'bob.j@example.com', 'hashed_password_456'),
('charlie_wang', 'charlie.wang@example.com', 'hashed_password_789'),
('diana_miller', 'diana.m@example.com', 'hashed_password_abc'),
('evan_chen', 'evan.chen@example.com', 'hashed_password_def');

创建gorm.go

创建gorm的数据库操作类,需要填入自己的数据库ip地址和端口,建立连接。初始化数据库连接实例GormDB *gorm.DB。dns这个的内容和我们平时写的数据库连接信息差不多,/test要改成自己要连接的数据库

Go 复制代码
package db

import (
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
)

// 公共变量,供其他包使用
var GormDB *gorm.DB

func Init() {
	// 初始化数据库连接

	dns := "root:12345678aa@tcp(数据库ip地址:3306)/test?charset=utf8mb4&parseTime=True&loc=Local"
	var err error
	GormDB, err = gorm.Open(mysql.Open(dns), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

}

Service类

这一层主要是调用GormDB 来完成各种数据库操作任务,数据处理。就和我们写java时的Service是一个作用。

Go 复制代码
import (
	"test/db"
	"test/model"
)

type userService struct{}

var UserService = new(userService)

// GetUser 获取user列表
func (s *userService) GetUser() ([]model.User, error) {
	var users []model.User

	res := db.GormDB.Find(&users)

	if res.Error != nil {
		return nil, res.Error
	}
	return users, nil
}

// AddUser 添加user
func (s *userService) AddUser(user *model.User) error {
	res := db.GormDB.Create(user)
	return res.Error
}

// DeleteUser 删除user
func (s *userService) DeleteUser(id uint) error {
	return db.GormDB.Delete(&model.User{}, id).Error
}

main方法

这里直接用main方法调用一下Service类,测试是否连接成功

Go 复制代码
func main() {
	// 初始化数据库连接
	db.Init()

	// 获取用户列表
	users, err := service.UserService.GetUser()
	if err != nil {
		log.Fatal("Failed to get users:", err)
	}

	// 打印用户列表
	for _, user := range users {
		fmt.Printf("ID: %d, 用户名: %s, 邮箱: %s, 密码: %s\n",
			user.ID, user.UserName, user.Email, user.Password)
	}
}

输出结果

run了一下,控制台输出如下面的结果

符合我们数据库的内容

验证成功,查询的数据与数据库一直,说明操作可行。更多的操作方法可以去顶部点击链接查看gorm官网教学。


以上就是golang数据库操作------gorm教学的全部内容。有什么问题和意见以及其他想法的可以在评论区进行留言。如果这篇博客文章对你有帮助,可以点赞收藏加关注。你们的支持是我更新的最大动力。

相关推荐
AI视觉网奇2 小时前
ue5 开发 web socket server 实战2026
c++·学习·ue5
嗯嗯=2 小时前
STM32单片机学习篇6
stm32·单片机·学习
2301_797312262 小时前
学习Java42天
java·开发语言·学习
找了一圈尾巴2 小时前
智能体自演进框架-ACE(论文学习)
学习·提示词
ValidationExpression2 小时前
学习:企业标准的容器化 CI,CD 发布流程
学习·ci/cd
Kapibalapikapi2 小时前
思考笔记 | 为什么需要“获取CDN后面的真实IP”
笔记·web安全·思考记录
式5162 小时前
大模型学习基础(九)LoRA微调原理
人工智能·深度学习·学习
GISer_Jing2 小时前
2026年前端开发目标(From豆包)
前端·学习·aigc
鄭郑2 小时前
【Playwright学习笔记 02】CSS-selector定位
笔记·学习