Skip to main content

gorm 数据库《=》golang结构体?

在使用 GORM 时,数据库和 Go 结构体之间的映射关系如下:

1. 数据库表 对应 Go 结构体

  • 每个数据库表对应一个 Go 结构体。

2. 数据库列 对应 结构体字段

  • 每个数据库列对应结构体中的一个字段。

3. 数据类型映射

  • 数据库的数据类型会映射到 Go 中的相应数据类型。例如,SQL 的 VARCHAR 对应 Go 的 stringINTEGER 对应 intuint

4. 主键

  • 使用 gorm:"primaryKey" 标记结构体中的主键字段。

5. 自动迁移

  • GORM 可以根据结构体自动创建或更新数据库表结构。

6. 自定义列名

  • 使用 gorm:"column:column_name" 标签自定义列名。

7. 忽略字段

  • 使用 gorm:"-" 标签忽略不需要映射的字段。

示例:

type User struct {
ID uint `gorm:"primaryKey"`
UserName string `gorm:"column:user_name"`
Email string `gorm:"unique"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt gorm.DeletedAt `gorm:"index"`
}

// 自定义表名
func (User) TableName() string {
return "users"
}

通过这些映射,GORM 能够自动处理数据库操作,使得开发更为简便。

orm 各对应什么?

在使用 ORM(对象关系映射)时,通常会将数据库中的表结构映射到 Go 语言中的结构体。以下是一些常见的对应关系:

1. 表(Table) 对应 结构体(Struct)

  • 数据库中的每个表对应一个 Go 结构体。

2. 列(Column) 对应 结构体字段(Struct Field)

  • 表中的每一列对应结构体中的一个字段。

3. 行(Row) 对应 结构体实例(Struct Instance)

  • 表中的每一行数据对应结构体的一个实例。

4. 主键(Primary Key)

  • 通常在结构体中使用字段标签 gorm:"primaryKey" 指定主键。

5. 外键(Foreign Key)

  • 使用 gorm:"foreignKey:FieldName" 指定外键关系。

6. 表名和字段名自定义

  • 使用 gorm:"column:column_name" 可以自定义字段名。
  • 使用 TableName() 方法可以自定义表名。

示例:

type User struct {
ID uint `gorm:"primaryKey"`
Name string `gorm:"column:user_name"`
Email string
CreatedAt time.Time
}

// 自定义表名
func (User) TableName() string {
return "users"
}

通过这些映射,ORM 可以自动生成 SQL 查询,简化数据库操作。