go语言的ORM框架Gorm的基础使用 | 青训营

78 阅读2分钟

基础介绍

ORM

Object-Relationl Mapping,即对象关系映射,这里的Relationl指的是关系型数据库 它的作用是在关系型数据库和对象之间作一个映射,这样,我们在具体的操作数据库的时候,就不需要再去和复杂的SQL语句 打交道,只要像平时操作对象一样操作它就可以了。

Gorm

Gorm便是Golang语言中一款性能极好的ORM库。

安装

在终端运行以下命令完成Gorm的安装。

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

连接数据库

GORM 官方支持的数据库类型有:MySQL, PostgreSQL, SQLite, SQL Server 和 TiDB。

MySQL

当我们连接mysql时,便可以使用以下方法进行连接,获得db对象,用以操作数据库。

import (   
"gorm.io/driver/mysql"  
"gorm.io/gorm"
)  
func main() {   
dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"  
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
}

CRUD

创建

与其他ORM框架不同,Gorm可以通过模型去自动帮你创建表,自动添加created_at,update_at,deleted_at等字段,并且在后续可以通过deleted_at字段实现软删除以及自动更新update_at字段。

user := User{Name: "Jinzhu", Age: 18, Birthday: time.Now()} 
result := db.Create(&user)  

查询

在gorm中,查询又分查询单个和查询全部

查询单个

GORM 提供了 FirstTakeLast 方法,以便从数据库中检索单个对象。

  • First会按照主键升序的规则,获取第一条记录。
db.First(&user)

相当于执行 SELECT * FROM users ORDER BY id LIMIT 1 这条SQL语句;

  • Take 获取第一条记录,没有指定排序字段
db.Take(&user)

相当于执行 SELECT * FROM users LIMIT 1 这条SQL语句;

  • Last 按照主键降序的规则,获取第一条记录,也就是正序的最后一条记录
db.Last(&user)
 

相当于执行 SELECT * FROM users ORDER BY id DESC LIMIT 1 这条SQL语句

查询全部

GORM 提供了 find 方法,检索全部对象。

// 获取所以记录
result := db.Find(&users) 
// SELECT * FROM users;

更新

GORM 提供save 方法进行对对象的更新,底层还是根据对象的id进行更新。

db.First(&user)

user.Name = "jinzhu 2"
user.Age = 100
db.Save(&user)

这段代码 就相当于执行 UPDATE users SET name='jinzhu 2', age=100, birthday='2016-01-01', updated_at = '2013-11-17 21:34:10' WHERE id=111 这条SQL语句;

删除

在GORM中 删除操作中也分删除单条记录和批量删除,用以适用不同场景。

删除单个

删除单个时需要指定主键 否则会批量删除

// Email 的 ID 是 `10` 
db.Delete(&email) 
// DELETE from emails where id = 10;
批量删除

删除多个时 就不需要指定主键 便会自动进行批量删除,这也是为什么上面当删除单个时需要指定主键的原因。

db.Delete(&Email{}, "email LIKE ?", "%jinzhu%")
// DELETE from emails where email LIKE "%jinzhu%";

总结

以上便是Gorm的安装和增删改查的接口介绍,总的来说Gorm是Golang语言中对开发者非常友好的一个ORM框架