这是我参与「第五届青训营 」伴学笔记创作活动的第 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值进行查询的时候才起作用