本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1、使用GORM操作mysql 数据库
1、GORM概述
GORM是Golang的一个orm 框架(采用元数据来描述对象与关系映射的细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中),功能齐全(具有关联、挂钩(hook)、支持预加载等),对开发者非常友好。
2、Gin 中使用 GORM
1、毫无疑问,安装
go get -u gorm.io/gorm
go get -u gorm.io/driver/mysql
如果使用了go mod 的管理,那就不需要了。 他自己会引
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm" )
2、使用GORM连接数据库
func init() {
//passWord为数据库密码
dsn := "root:passWord@tcp(192.168.0.6:3306)/gin?charset=utf8mb4&parseTime=True&loc=L
ocal"
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
fmt.Println(err)
}
}
3、定义操作数据库的模型
1、声明模型
模型是带有基本Go类型的普通结构,指针/别名,或者实现了Scanner和Valuer接口的自定义类型
type User struct {
ID uint
Name string
Email *string //指针
Age uint8
Birthday *time.Time //日期
MemberNumber sql.NullString
ActivatedAt sql.NullTime
CreatedAt time.Time
}
注意:
1、结构体的名称必须**首字母大写**
2、结构体中的**字段名称首字母必须大写**
3、默认情况表名是结构体名称的复数形式
4、约定( Conventions)
GORM 更喜欢约定而不是配置,默认情况下,GORM 使用ID作为主键,将结构名称复数snake_cases作为表名,snake_case作为列名,并使用CreatedAt,UpdatedAt来跟踪创建/更新时间。
如果遵循 GORM 采用的约定,就会减少很多配置,不遵循的话就要自己配置
5、gorm.Model
GORM 定义了一个gorm.Model结构体,其中包括字段ID, CreatedAt, UpdatedAt,DeletedAt
type Model struct {
ID uint `gorm:"primaryKey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
}
注意:我们可以将其嵌入到您的结构中以包含这些字段
嵌入式结构
//使用嵌入式
type User struct {
gorm.Model
Name string
}
//相当于(不)
type User struct {
ID uint `gorm:"primaryKey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
Name string
}
如果想了解的更加详细,可以去查看官方文档:gorm.io/docs/models…