这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
初识 Go 语言数据库框架
一、Go ORM——常用的支持主流数据库的ORM框架
概要及特点介绍
GORM 使用 Go 语言编写,支持主流数据库,对开发者友好,国内大多都在用。GORM 具有全功能 ORM;具有多种关联 (Has One,Has Many,Belongs To,Many To Many,多态,单表继承);在开发者常用的 Create,Save,Update,Delete,Find 中设置钩子方法;支持 Preload、Joins 的预加载;其模式有 Context、预编译模式、DryRun 模式;支持批量插入、FindInBatches、Find/Create with Map,使用 SQL 表达式、Context Valuer 进行 CRUD;可支持自定义 Logger;具有灵活的可扩展插件 API:Database Resolver(多数据库,读写分离)、Prometheus。
相关资料
GORM 官网:gorm.cn/
GORM 源码:github.com/go-gorm/gor…
数据库引擎
支持的数据库引擎有 MySQL、PostgreSQL、SQlite、SQL Server
GORM 模型
- 约定模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner 和 Valuer 接口的自定义类型及其指针或别名组成。
- GORM 倾向于约定而非配置。默认下GORM 使用 ID 作为主键,使用结构体名的蛇形复数作为表名,字段名的蛇形作为列名,并使用 CreatedAt、UpdatedAt 字段追踪创建、更新时间。若开发者遵循 GORM 已有的约定,可以减少配置和代码量。如果约定不符合需求,GORM 允许开发者自定义配置它们。
GORM 的安装
使用命令安装 GORM,其中安装支持数据库引擎可根据需求来确定,这里确定使用的是 MySQL。
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
GORM 快速入门
要想用 GORM 连接数据库很简单,首先先打开 MySQL 数据库(localhost:3306),选择数据库 teststudent。
package main
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
接着导入GORM包,然后声明GORM模型,即编写对应的数据库表 DAO 结构体 Student。
type Student struct {
Id uint
Name string
Gender string
}
func main() {
dsn := "root:123456@tcp(127.0.0.1:3306)/teststudent?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
panic(err)
}
db.AutoMigrate(&Student{})
s1 := Userinfo{Id: 1000, Name: "张三", Gender: "男"}
db.Create(&s1)
}