Gorm入门 | 青训营

78 阅读2分钟

Gorm入门

概述

  • 全功能的 ORM
  • 关联(有一个、有多个、属于、多对多、多态性、单表继承)
  • 挂钩(创建/保存/更新/删除/查找之前/之后)
  • 急切加载Preload,Joins
  • 事务、嵌套事务、保存点、RollbackTo 到保存点
  • 上下文、准备语句模式、DryRun 模式
  • 批量插入、FindInBatches、使用 Map 查找/创建、使用 SQL Expr 和 Context Valuer 进行 CRUD
  • SQL 生成器、更新插入、锁定、优化器/索引/注释提示、命名参数、子查询
  • 复合主键、索引、约束
  • 自动迁移
  • 记录器
  • 可扩展、灵活的插件 API:Database Resolver(多个数据库、读/写拆分)/Prometheus...
  • 每个功能都带有测试
  • 开发者友好

安装

  1. 环境配置

首先,你需要安装Gorm。打开终端并输入以下命令来获取Gorm:

根据你使用的数据库类型,你需要安装相应的驱动程序。例如,如果你使用MySQL,可以安装gorm的MySQL驱动:

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

快速入门

数据模型定义

package main
​
import (
  "gorm.io/gorm"
  "gorm.io/driver/sqlite"
)
​
type Product struct {
  gorm.Model
  Code  string
  Price uint
}
//加入了一个gorm.Model结构体,表示它是一个gorm模型,可以用于数据库操作

在Produc加入了一个gorm.Model结构体,表示它是一个gorm模型,可以用于数据库操作定义了两个字段Code string类型,Price

uint(无符号整数)类型

数据库连接和增删改查

func  main () {
  db, err := gorm.Open(sqlite.Open( "test.db" ), &gorm.Config{}) if err != nil { panic ( "连接数据库失败" )  }
 //使用gorm的Open函数和SQLite的驱动程序打开一个名为"test.db"的数据库。如果连接失败,会抛出一个panic。 
    
​
​
  // 创建数据库Product表
  db.AutoMigrate(&Product{})
​
  // 插入一条数据
  db.Create(&Product{代码: "D42" , 价格: 100 })
​
  // 读取
    var Product Product   db.First(&product, 1 ) // 查找具有整数主键的产品  
    db.First(&product, "code = ?" , "D42" ) // 查找具有代码 D42 的产品
  
​
​
​
    // 更新 - 将产品的价格更新为 200
    db.Model(&product).Update( "Price" , 200 )
    // 更新 - 更新多个字段
    db.Model(&product).Updates(Product{Price: 200 , Code: "F42 " }) 
    // 非零字段  
    db.Model(&product).Updates( map [ string ] interface {}{ "Price" : 200 , "Code" : "F42" })
  
​
​
​
  // 删除 - 删除产品
  db.Delete(&product, 1 ) 
}

要查询数据,你可以使用Gorm的查询方法。First方法可以返回符合条件的第一个记录,而Find方法可以返回符合条件的所有记录

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{})
}

user: 数据库用户名

password: 数据库密码

tcp(127.0.0.1:3306): 表示使用TCP连接到本地主机的3306端口,这是MySQL的默认端口

dbname: 要连接的数据库名

charset=utf8mb4: 指定字符集为UTF-8

可以修改对应参数来连接自己的数据库

此外,GORM还提供了许多方便的功能,例如链式查询、事务处理、关联查询等。它还支持多种数据库,包括MySQL、PostgreSQL、SQLite等。