如何使用GORM库进行数据库各种操作 | 青训营

51 阅读2分钟

GORM是什么?

GORM 是 Go 语言中的一个强大的对象关系映射(ORM)库,它提供了一种简单且优雅的方式来进行数据库操作。ORM 是一种编程技术,它将数据库表与程序中的对象进行映射,使得开发者可以使用面向对象的方式进行数据库的增删改查操作,而无需直接编写 SQL 语句。

GORM 提供了许多功能和特性,包括:

  1. 模型定义:GORM 允许开发者通过定义结构体来表示数据库表,并可以通过在结构体中进行标记(tagging)来指定字段名称、数据类型、约束条件等。
  2. 数据库迁移:GORM 支持自动化数据库迁移,即根据模型定义自动生成数据库表,以及根据模型的更改自动更新数据库表结构。
  3. CRUD 操作:GORM 提供了简单易用的 API,可以进行常见的数据库操作,如创建(Create)、读取(Retrieve/Query)、更新(Update)、删除(Delete)等。
  4. 查询构建器:GORM 提供了强大的查询构建器,可以通过链式调用的方式构建复杂的查询语句,并支持条件筛选、排序、分页等功能。
  5. 关联关系:GORM 支持定义和处理数据库表之间的关联关系,如一对一、一对多、多对多等关系,在查询时可以方便地进行关联数据的加载。
  6. 事务支持:GORM 提供了事务管理的功能,可以确保一组数据库操作要么全部成功要么全部失败,从而保持数据的一致性。

如何进行GORM相关包导入?

go get gorm.io/gorm 
go get gorm.io/driver/mysql

使用这两行命令进行GORM操作MySQL数据库导入。

测试GORM连通性

首先我们要确定以下四个变量,数据库用户名和用户密码、连接那个数据库还有数据库地址端口。可以启动windows shell窗口输入mysql -u root -p输入自己设置的密码进行密码验证。这里使用var变量,

var (
    db_Address  = "127.0.0.1/3306"
    db_username = "root"
    db_password = "123456"
    db_name     = "dousheng"
)

func testConnect() {
    db_info := strings.Join([]string{db_username, ":", db_password, "@tcp(", db_Address, ")/", db_name}, "")
    db, err := gorm.Open(mysql.Open(db_info), &gorm.Config{})
    if err != nil {
       fmt.Println("disconnected", err)
       return
    }
    sql, err := db.DB()
    defer sql.Close()
    //后续数据库操作……
}

上述代码进行了测试连接本机MySQL的能力,请根据自己需求进行var变量的修改。

进行数据增删改查(简易版本)

type Student struct {
    gorm.Model
    No       int8   `json:"id" gorm:"primaryKey""`
    Password string `json:"password"`
}

func (Student) TableName() string {
    return "student"
}

func createTable() {
    err := db.AutoMigrate(&Student{}) //自动创建表
    if err != nil {
       fmt.Printf("失败", err)
    }
}


func addData(student Student) {
    db.Create(&student)
}


func findData() {
    var student []Student
    db.Find(&student)
    for i := 0; i < len(student); i++ {
       fmt.Println(student[i])
    }
}

func updateData() {
    var student Student
    db.First(&student)
    student.No = 100
    db.Save(&student)
}
func deleteData() {
    var student Student
    db.First(&student)
    db.Delete(&student)
}

声明student,使用AutoMigrate()方法自动创建数据库。使用create方法增加数据,使用find方法查找数据,使用first找第一个数据,save进行保存进入数据库,delte删除特定数据。