gorm 数据库《=》golang结构体?
在使用 GORM 时,数据库和 Go 结构体之间的映射关系如下:
1. 数据库表 对应 Go 结构体:
- 每个数据库表对应一个 Go 结构体。
2. 数据库列 对应 结构体字段:
- 每个数据库列对应结构体中的一个字段。
3. 数据类型映射:
- 数据库的数据类型会映射到 Go 中的相应数据类型。例如,SQL 的
VARCHAR对应 Go 的string,INTEGER对应int或uint。
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 查询,简化数据库操作。