1. 数据库模型定义 在 GORM 中,需要先定义一个结构体来表示数据库表。
示例:定义 User
模型 1 2 3 4 5 6 7 8 9 10 package maintype User struct { ID uint `gorm:"primaryKey"` Name string `gorm:"size:100"` Email string `gorm:"unique"` Age int CreatedAt time.Time UpdatedAt time.Time }
gorm:"primaryKey"
:标记主键。
gorm:"size:100"
:限制字符串长度为 100。
gorm:"unique"
:设置字段唯一性。
2. 创建记录(Create) 使用 Create
方法将数据插入到数据库。
示例:插入一条记录 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 package mainimport ( "gorm.io/driver/mysql" "gorm.io/gorm" "log" ) type User struct { ID uint `gorm:"primaryKey"` Name string Email string Age int } func main () { dsn := "user:password@tcp(127.0.0.1:3306)/dbname?charset=utf8mb4&parseTime=True&loc=Local" db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{}) if err != nil { log.Fatalf("Failed to connect to database: %v" , err) } db.AutoMigrate(&User{}) user := User{Name: "Alice" , Email: "alice@example.com" , Age: 25 } result := db.Create(&user) log.Printf("Inserted ID: %d, Rows affected: %d" , user.ID, result.RowsAffected) }
3. 查询记录(Read) 查询单条记录 使用 First
方法根据主键查询第一条记录:
1 2 user := User{} db.First(&user, 1 )
查询多条记录 使用 Find
方法获取所有记录:
1 2 users := []User{} db.Find(&users)
添加条件查询 使用 Where
方法添加条件:
1 2 user := User{} db.Where("email = ?" , "alice@example.com" ).First(&user)
4. 更新记录(Update) 使用 Save
或 Update
方法更新数据。
更新单个字段 1 db.Model(&user).Update("name" , "Updated Alice" )
更新多个字段 1 db.Model(&user).Updates(User{Name: "Updated Alice" , Age: 30 })
使用条件更新 1 db.Model(&User{}).Where("age > ?" , 20 ).Update("age" , 25 )
5. 删除记录(Delete) 使用 Delete
方法删除记录。
删除指定记录
按条件删除 1 db.Where("age < ?" , 18 ).Delete(&User{})
注意 :GORM 的删除操作默认是软删除,会设置 DeletedAt
字段而不直接移除数据。
6. 总结 通过 GORM 的 CRUD 操作,开发者可以快速高效地管理数据库:
使用 Create
插入新数据。
使用 First
和 Find
查询单条或多条记录。
使用 Update
或 Updates
修改数据。
使用 Delete
删除记录,并支持软删除功能。