本文已参与「新人创作礼」活动,一起开启掘金创作之路。
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 的管理,那就不需要了。 他自己会引
go import ( "fmt" "gorm.io/driver/mysql" "gorm.io/gorm" )
### 2、使用GORM连接数据库
go 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接口的自定义类型 ```go 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
go type Model struct { ID uint `gorm:"primaryKey"` CreatedAt time.Time UpdatedAt time.Time DeletedAt gorm.DeletedAt `gorm:"index"` }
注意:我们可以将其嵌入到您的结构中以包含这些字段 ### 嵌入式结构
go //使用嵌入式 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 }
如果想了解的更加详细,可以去查看官方文档:https://gorm.io/docs/models.html#embedded_struct