Select("name", "email"),而不是 Select("name, email")
package main
import (
"fmt"
"time"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
"gorm.io/gorm/logger"
)
type User struct {
ID uint
IdCard string
Name string
Email string
Age int `gorm:"not null"`
Address string `gorm:"size:255"`
PhoneNumber string `gorm:"size:20"`
IsActive bool `gorm:"default:true"`
Balance float64 `gorm:"default:0"`
LastLogin time.Time
Role string `gorm:"size:50"`
Country string `gorm:"size:50"`
City string `gorm:"size:50"`
}
func main() {
db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
if err != nil {
fmt.Println("Failed to connect to database:", err)
return
}
db.AutoMigrate(&User{})
db.Create(&User{Name: "John Doe", Email: "john@example.com", Age: 30, Address: "123 Main St", PhoneNumber: "1234567890", IdCard: "12345"})
db.Create(&User{Name: "Jane Doe", Email: "jane@example.com", Age: 28, Address: "456 Elm St", PhoneNumber: "0987654321", IdCard: "123456"})
println("one update start")
err = db.Model(&User{}).Select("name,email").Where("id_card = ?", "44030420091114548X").Updates(map[string]interface{}{
"name": "邓文怡",
"email": "dengwenyi@163.com",
}).Error
if err != nil {
panic(err)
}
println("one update end")
println("two update start")
err = db.Model(&User{}).Select("name", "email").Where("id_card = ?", "44030420091114548X").Updates(map[string]interface{}{
"name": "邓文怡",
"email": "dengwenyi@163.com",
}).Error
if err != nil {
panic(err)
}
println("two update end")
var users []User
db.Find(&users)
for _, u := range users {
fmt.Printf("ID: %d, Name: %s, Email: %s\n", u.ID, u.Name, u.Email)
}
}