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教学的全部内容。有什么问题和意见以及其他想法的可以在评论区进行留言。如果这篇博客文章对你有帮助,可以点赞收藏加关注。你们的支持是我更新的最大动力。

相关推荐
海盗12347 分钟前
DSH 接入 OpenCode Go 报 400 MissingSessionID:从 LLM 语义层退到 fetch 传输层的完整排障
开发语言·后端·golang
zr想努力13 分钟前
GAS学习(UE5自用)
学习·ue5
库玛西16 分钟前
深度解构高并发利器:纯事件驱动 Reactor 模式的设计哲学与工程实践
服务器·开发语言·c++·笔记·tcp/ip
她说..20 分钟前
MySQL JSON 处理学习文档
学习·mysql·json
泰晶科技30 分钟前
【晶振相位噪声对通信系统的影响:如何降低5G光模块信号误码率】
笔记·5g
资讯综合39 分钟前
一年级数学机构怎么选?与学习阶段相匹配的线上思维课程与线下机构差异分析
学习
糖炒栗子03261 小时前
PostgreSQL 使用 ctid 修改完全重复的行
笔记
老当益壮梁奶奶1 小时前
51单片机入门总结(一):基本概念、最小系统、流水灯与按键实验(附完整代码)
笔记·stm32·单片机·嵌入式硬件·51单片机
M78佐菲1 小时前
51单片机学习笔记(2)
linux·笔记·嵌入式硬件·学习·51单片机