Go的Gorm框架简单事例和入门 | 青训营笔记

70 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天

Gorm简介

Gorm是一个全功能的ORM,负责的是承接Go语言对数据库的查询

Gorm的简单实例

首先安装相应的依赖

go get -u gorm.io/gorm 
go get -u gorm.io/driver/sqlite 

然后尝试一个简单的实例

package Grom

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

type Product struct {
	gorm.Model
	Code  string
	Price uint
}

func main() {
	db, err := gorm.Open(mysql.Open(test.db), &gorm.Config{})
	if err != nil {
		panic("failed to connect database")
	}

	// 迁移schema
	db.AutoMigrate(&Product{})

	// 新建记录
	db.Create(&Product{Code: "D42", Price: 100})

	// 读操作
	var product Product
	db.First(&product, 1)               // 根据整形主键查找
	db.First(&product, "code=?", "D42") //查找code字段为D42的记录

	// 更新操作
	db.Model(&product).Update("Price", 200)

	// Delete操作
	db.Delete(&product, 1)
}

其中,使用gorm.Open选择打开数据库文件,注意需要指明使用的是何种数据库的驱动 接下来的CRUD操作就比较常规了,比如使用First函数寻找第一个符合查询条件的

Gorm目前支持MySql,SQLServer, PostgreSQL, SQLite,Gorm通过驱动来连接数据库。

Gorm创建数据

Gorm使用结构体定义数据,然后使用db.Create()方法将结构体的内容插入到数据库中。需要注意:结构体中的参数需要和数据库中的表的属性相一致

user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()}
result := db.Create(&user) // 通过数据的指针来创建

也可以选定字段来创建

db.Select("Name", "Age", "CreatedAt").Create(&user)
// INSERT INTO `users` (`name`,`age`,`created_at`) VALUES ("jinzhu", 18, "2020-07-04 11:05:21.775") 

Gorm查询数据

Gorm可以使用First(),Take(),Last()方法从数据库中检索单个对象,如果没有找到记录,他会返回ErrRecordNotFound错误。注意这些方法需要传入的是结构体的指针,比如

db.First(&user)
// SELECT * FROM users ORDER BY id LIMIT 1;

其中,First和Last函数会根据主键找到第一个和最后一个记录,它只在通过struct或者提供model值进行查询的时候才起作用