使用 GORM(Go 的 ORM 库) | 青训营

71 阅读1分钟

GORM简介

GORM是一个go语言的全功能的ORM库,并支持如下特性:

  • 关联 (拥有一个,拥有多个,属于,多对多,多态,单表继承)
  • 事务,嵌套事务,Save Point,Rollback To to Saved Point
  • 批量插入,FindInBatches,Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD
  • ......

GORM的安装

首先根据GORM官方文档,在项目目录下执行命令:

go get -u gorm.io/gorm
go get gorm.io/driver/mysql # mysql的驱动

然后在项目文件中引入GORM即可

import "gorm.io/gorm"
import "gorm.io/driver/mysql"

至此,我们的GORM库就安装好了 🤗


基本使用(CRUD)

连接到数据库:

type User struct {
	gorm.Model
	Name     string `json:"name"`
	Password string `json:"password"`
}

// initMySql 先从config.json 中读取数据库信息,然后建立连接
func initMySql() {
	var err error
        // 用viper从config里面读取配置信息
	username := viper.GetString("database.mysql.username")
	password := viper.GetString("database.mysql.password")
	host := viper.GetString("database.mysql.host")
	port := viper.GetInt("database.mysql.port")
	dbname := viper.GetString("database.mysql.dbname")
	dsn := fmt.Sprintf("%s:%s@tcp(%s:%d)/%s?charset=utf8&parseTime=True&loc=Local", username, password, host, port, dbname)
        // 创建db实例
	MySqlDB, err = gorm.Open(mysql.Open(dsn))
	if err != nil {
		panic(err)
	}
}

: 向数据库中插入数据

MySqlDB.Model(&User{}).Create(&User{Name: "test",Password: "test",})

:从数据库中删除一条数据

MySqlDB.Model(&User{}).Delete(&User{Name: "test",})

:从数据库中查询数据:

var u User
MySqlDB.Model(&User{}).Where("name = ?", "test").First(&u)
// First如果没有查询到该条数据,则会返回ErrRecodeNotFound
MySqlDB.Model(&User{}).Where("name = ?", "test").Find(&u)
// Find如果没有查询到数据,不会返回错误

:修改数据:

MySqlDB.Model(&User{}).Where("name = ?", "test").Update("password", "test2")
// 修改之前:
// password : test
// 修改之后
// password : test2

总的来说,GORM是一款功能强大、易用性高的ORM库,非常适用于新手和初学者,同时也支持很多高级特性,非常适合用于Go语言开发中。