Gin-使用GORM操作mysql 数据库

1,452 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

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结构体,其中包括字段IDCreatedAtUpdatedAt,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…