package main import ( "fmt" "gorm.io/driver/sqlite" "gorm.io/gorm" ) //type User struct { // ID uint `gorm:"primaryKey"` // Name string `gorm:"size:100"` // Email string `gorm:"size:100;unique"` // Age int // UpdatedAt time.Time //} func main() { db, _ := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) db.AutoMigrate(&User{}) // 插入测试数据 user := User{Name: "Alice", Email: "alice@example.com", Age: 30} db.Create(&user) // 1. 更新单个字段 db.Model(&User{}).Where("id = ?", user.ID).Update("name", "Alice Updated") fmt.Println("Updated single field") // 2. 更新多个字段(使用 map) db.Model(&User{}).Where("id = ?", user.ID).Updates(map[string]interface{}{ "name": "Alice Smith", "age": 31, }) fmt.Println("Updated multiple fields (map)") // 3. 更新多个字段(使用 struct,仅更新非零值) db.Model(&User{}).Where("id = ?", user.ID).Updates(User{ Name: "Alice Johnson", Age: 32, }) fmt.Println("Updated multiple fields (struct)") // 4. 强制更新零值字段 db.Model(&User{}).Where("id = ?", user.ID).Update("age", 0) fmt.Println("Updated age to zero") // 5. 批量更新 db.Model(&User{}).Where("age > ?", 25).Update("age", gorm.Expr("age + ?", 1)) fmt.Println("Batch update completed") // 查询最终结果 var finalUser User db.First(&finalUser, user.ID) fmt.Printf("Final user: %s (age=%d)\n", finalUser.Name, finalUser.Age) }