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

相关推荐
風清掦几秒前
【江科大STM32学习笔记-09】USART串口协议 - 9.2 USART串口数据包
笔记·stm32·单片机·嵌入式硬件·学习
happymaker062618 分钟前
web前端学习日记——DAY07(js交互编程)
前端·javascript·学习
●VON21 分钟前
Flutter 入门指南:从基础组件到状态管理核心机制
前端·学习·flutter·von
毕设源码-郭学长26 分钟前
【开题答辩全过程】以 基于SSM Vue的中药知识学习交流网站为例,包含答辩的问题和答案
学习
童话名剑29 分钟前
FCOS(学习笔记)
笔记·学习·fcos
weixin_4588726130 分钟前
东华复试OJ冲刺1
学习
请你喝好果汁64135 分钟前
GitHub 开发流程学习笔记
笔记·学习·github
Cocktail_py36 分钟前
Windows直接部署crawlab
windows·python·golang
风123456789~42 分钟前
【架构专栏】第2章 计算机系统基础知识 1/3
笔记·架构
云边散步42 分钟前
godot2D游戏教程系列二(21)
笔记·学习·游戏·游戏开发