GORM使用入门|青训营笔记

31 阅读3分钟

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

前言

GORM是一个使用go语言编写的ORM框架,支持主流数据库,文档齐全,对开发者友好,本文将简要介绍GORM的基础使用方法。

安装

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

模型定义

模型是标准的struct,对应于数据库中的数据表,由go的基本数据类型、实现了Scanner和Valuer接口的自定义类型及其指针或别名组成。

type User struct {
  ID           uint
  Name         string
  Email        *string
  Age          uint8
  Birthday     *time.Time
  MemberNumber sql.NullString
  ActivedAt    sql.NullTime
  CreatedAt    time.Time
  UpdatedAt    time.Time
}

约定

GORM倾向于约定而不是配置,常用的默认配置如下:

  • 表名:使用结构体名的蛇形复数(xxx_xxx_xxxs)作为表名。

  • 列名:使用字段名的蛇形命名,可以使用column标签或命名策略来覆盖列名。

  • 主键:默认使用ID作为表主键,通过标签 primaryKey 可以将其它字段设为主键。

    若将多个字段设置为主键,可以创建复合主键

    默认情况下,整型主键启用自增模式,若要禁用需要将字段autoIncrement设置为false

  • 时间戳

    • CreatedAt :创建记录时,如果该字段值为零值,则将该字段的值设为当前时间。要使用不同名称的字段可以配置autoCreateTim标签。
    • UpdatedAt:更新记录时,将该字段的值设为当前时间。创建记录时,如果该字段值为零值,则将该字段的值设为当前时间。要使用不同名称的字段可以配置autoUpdateTim 标签。
  • DeletedAt:模型将具备软删除能力,当模型调用 Delete 时,记录不会从数据库中被真正删除,但 GORM 会将 DeletedAt 置为当前时间, 并且无法再通过普通的查询方法找到该记录。

GORM 定义一个 gorm.Model 结构体,其包括字段 IDCreatedAtUpdatedAtDeletedAt,将其嵌入到结构体中可以是结构体包含上述字段。

// gorm.Model 的定义
type Model struct {
  ID        uint           `gorm:"primaryKey"`
  CreatedAt time.Time
  UpdatedAt time.Time
  DeletedAt gorm.DeletedAt `gorm:"index"`
}

嵌入结构体

  • 匿名字段:GORM会将其字段包含在父结构体中
  • 结构体字段:通过标签embedded嵌入
  • 为嵌入的字段名统一加前缀:标签 embeddedPrefix

字段标签

用于对字段进行设置,形式:gorm:"tag1;tag2;..."

数据库连接

GORM 官方支持的数据库类型: MySQL, PostgreSQL, SQlite, SQL Server

数据库的连接需要导入对应数据库的驱动程序,引入对应驱动并正确指定gorm.Open()参数即可实现数据库的连接。

以mysql为例(其余数据库连接参见文档gorm.cn/docs/connec…):

import (
  "gorm.io/driver/mysql"
  "gorm.io/gorm"
)
​
func main() {
  // 参考 https://github.com/go-sql-driver/mysql#dsn-data-source-name 获取详情
  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{})
}

数据库基本操作

  • 数据库的基本操作包括记录的创建、查询、更新和删除等,GORM提供了对应的方法支持:Create()First()Find()Update()Delete()等。
  • 除了GORM给定的数据库操作方法,GORM还支持使用原生SQL操作数据库。
  • 官方文档:gorm.cn/docs/create…

总结

本文介绍了GORM的基础使用方式,主要包括框架的安装、数据库连接、模型构建、基础操作接口等,在建立数据库连接,创建模型后,我们可以通过操作接口的调用实现对数据库的基础操作,具体的使用方式可查阅官方文档。

引用参考

gorm.cn/docs/index.…