使用 GORM(Go 的 ORM 库)连接数据库
GORM(Go Object Relational Mapping)是一个流行的Go编程语言中的ORM(对象关系映射)库。ORM是一种编程技术,它将关系型数据库中的表格和记录映射成对象和对象之间的关系,从而将数据库操作转化为面向对象的操作。
GORM旨在提供一种简洁而强大的方式来进行数据库操作,与传统的SQL数据库操作相比,它减少了开发者编写大量重复的SQL语句的工作。开发者可以通过GORM的API进行增删改查等常见数据库操作,而无需手动编写复杂的SQL语句。
GORM的主要特点和优势包括:
- 简单易用:GORM提供了直观且易于理解的API,使得开发者可以快速上手,无需繁琐的配置和编写大量的CRUD操作代码。
- 自动化映射:GORM根据定义的模型结构自动进行数据库表格和对象之间的映射,并提供了丰富的标签注释来定义表名、字段名、关联关系等信息。
- 内置的数据校验:GORM支持在模型中定义数据校验规则,并能够自动进行数据校验,确保数据的完整性和准确性。
- 强大的查询功能:GORM提供了丰富的查询方法和条件,可以轻松实现复杂的查询需求,例如条件查询、排序、分页等。
- 支持事务操作:GORM支持事务操作,可以确保数据库操作的原子性和一致性,保障数据的完整性。
- 多数据库支持: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进行赋值并在数据库中进行创建