- Gorm之Model模型
- 1.模型定义
- 2.gorm.Model模型定义
- 3.嵌套gorm.Model结构体
- 4.嵌套普通结构体
- 5.嵌入普通结构体并添加前缀
- 6.自定义模型
注:本文是基于Windos系统上 gorm.io/gorm@v1.23.4、gorm.io/driver/mysql@v1.3.3进行讲解
1.模型定义2.gorm.Model模型定义模型:定义的这个模型与表是一一对应,我们在查找表时是用这个模型来代替表的,然后来操作数据库中的对应的数据表;
模型一般都是结构体、Go的基本数据类型,或者指针、sql.Scanner、driver.Valuer、接口;(结构体最常用)
下面这个模型是系统自带的一个模型, 包含的字段有 ID,CreatedAt, UpdatedAt, DeletedAt。
Time是time包里的一个结构体
// Model a basic GoLang struct which includes the following fields: ID, CreatedAt, UpdatedAt, DeletedAt
// It may be embedded into your model or you may build your own model without it
// type User struct {
// gorm.Model
// }
type Model struct {
ID uint `gorm:"primarykey"`
CreatedAt time.Time
UpdatedAt time.Time
DeletedAt DeletedAt `gorm:"index"`
}
3.嵌套gorm.Model结构体
把系统自带的“内置结构体”给嵌套到自定义的结构体里面;(go原因是支持嵌套的)
package main
import (
"fmt"
"gorm.io/driver/mysql"
"gorm.io/gorm"
)
type user struct {
gorm.Model
Name string
}
func main() {
dsn := "root:414524@tcp(127.0.0.1:3306)/gotest?charset=utf8mb4&parseTime=True&loc=Local"
conn, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
fmt.Println(err)
}
conn.AutoMigrate(&user{})
}
4.嵌套普通结构体
5.嵌入普通结构体并添加前缀
6.自定义模型
type User struct {
ID int
Name string
}



