1. 前置知识
1. Golang 中结构体
定义:
1 2 3 4 5 6
| type UserInfo struct { ID uint Name string Gender string Hobby string }
|
使用:
1 2
| user1 := UserInfo{1, "小明", "男", "篮球"} fmt.Println(user1.ID, user1.Name)
|
2. ORM 概念
数据表 |
结构体 |
数据记录 |
结构体实例 |
数据字段 |
结构体字段 |
3. GORM 安装
1 2
| go get -u gorm.io/gorm go get -u gorm.io/driver/mysql
|
4. 数据库连接
- 指定 dsn (Data Source Name): 告诉 数据库驱动 如何处理数据
1 2 3 4
| dsn := "user:pass@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local"
|
- 使用 dsn 连接数据库
1
| db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
|
5. 创建表自动迁移
1 2 3 4 5 6 7
| type UserInfo struct { ID uint Name string Gender string Hobby string } db.AutoMigrate(&UserInfo{})
|
- 默认会创建
user_infos
表 (大驼峰改下划线加复数)
AutoMigrate
可重复多次执行, 如结构体发生变化则会修改, 无则无操作
6. GURD
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
u1 := UserInfo{1, "小明", "男", "篮球"} db.Create(&u1)
var u2 UserInfo db.First(&u2, "name = ?", "小明")
db.Model(&u1).Update("hobby", "羽毛球")
db.Delete(&u1)
|
参考
a. GORM 官网
b. BV1U7411V78R