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