实践笔记1 | 青训营

68 阅读3分钟

使用 GORM(Go 的 ORM 库)连接数据库

GORM(Go Object Relational Mapping)是一个流行的Go编程语言中的ORM(对象关系映射)库。ORM是一种编程技术,它将关系型数据库中的表格和记录映射成对象和对象之间的关系,从而将数据库操作转化为面向对象的操作。

GORM旨在提供一种简洁而强大的方式来进行数据库操作,与传统的SQL数据库操作相比,它减少了开发者编写大量重复的SQL语句的工作。开发者可以通过GORM的API进行增删改查等常见数据库操作,而无需手动编写复杂的SQL语句。

GORM的主要特点和优势包括:

  1. 简单易用:GORM提供了直观且易于理解的API,使得开发者可以快速上手,无需繁琐的配置和编写大量的CRUD操作代码。
  2. 自动化映射:GORM根据定义的模型结构自动进行数据库表格和对象之间的映射,并提供了丰富的标签注释来定义表名、字段名、关联关系等信息。
  3. 内置的数据校验:GORM支持在模型中定义数据校验规则,并能够自动进行数据校验,确保数据的完整性和准确性。
  4. 强大的查询功能:GORM提供了丰富的查询方法和条件,可以轻松实现复杂的查询需求,例如条件查询、排序、分页等。
  5. 支持事务操作:GORM支持事务操作,可以确保数据库操作的原子性和一致性,保障数据的完整性。
  6. 多数据库支持:GORM支持多种常见的数据库,如MySQL、PostgreSQL、SQLite等,可以在不同的数据库之间无缝切换。

以下是使用GORM连接数据库并实现增删改查操作的实现过程:

一、首先安装GORM库

在终端输入代码安装GORM库

go get -u github.com/go-gorm/gorm

二、导入GORM包

在正式进行编写之前导入GORM包

import (  
_ "Project/utils"  
"fmt"  
"gorm.io/driver/mysql"  
_ "gorm.io/driver/mysql"  
"gorm.io/gorm"  
_ "gorm.io/gorm"  
_ "gorm.io/gorm/logger"  
"gorm.io/gorm/schema"  
_ "gorm.io/gorm/schema"  
"os"  
)

导入对应GORM包和mysql包

三、连接数据库

dns := "lyq:123456@(127.0.0.1:3306)/project2?charset=utf8mb4&parseTime=true"  
db, err = gorm.Open(mysql.Open(dns), &gorm.Config{  
DisableForeignKeyConstraintWhenMigrating: true,  
if err != nil {  
fmt.Println("连接数据库失败,请检查参数:", err)  
os.Exit(1)  
}  
_ = db.AutoMigrate(&User{}, &Article{})

其中lyq是数据库的名字,123456是数据库的密码,project2是数据库的名称,charset是指编码类型

四、定义模型

创建结构体与数据库中的元素内容一一对应以对数据进行编辑

type User struct {  
gorm.Model  
Username string `gorm:"type:varchar(20);not null " json:"username" validate:"required,min=4,max=12" label:"用户名"`  
Password string `gorm:"type:varchar(500);not null" json:"password" validate:"required,min=6,max=120" label:"密码"`  
}

其中除了GORM可以自己处理的内容外,增添了用户名和密码两个元素并对其进行值的限制

五、数据库操作

1.查询

var user User  
db.Select("id").Where("username = ?", name).First(&user)  
if user.ID > 0 {  
return errmsg.ERROR_USERNAME_USED 
}  
return errmsg.SUCCSE

是对数据进行查找username为name的第一个记录,并判断是否存在,若不为0则存在并返回用户存在

2.修改

db.Model(&user).Update("username", "aa")

是对user中的值进行修改,即将username字段改为aa

3.删除

db.Delete(&user)

即对user数据对象进行删除

4.创建记录

user2 := User{Model: gorm.Model{ID: Id, CreatedAt: time.Now(), UpdatedAt: time.Now()}, Username: username, Password: password}  
db.Create(&user2)

对user2进行赋值并在数据库中进行创建