#在gorm中实现crud
GORM 是一个用于 Go 语言的 ORM 库,它封装了对数据库的操作,并简化了 SQL 语句的使用。支持多种数据库:如 MySQL、PostgreSQL、SQLite、SQL Server
CRUD 是数据库操作的四种基本功能:
- Create:创建数据
- Read:读取数据
- Update:更新数据
- Delete:删除数据
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| 创建数据库 db, err := gorm.Open(mysql.Open("user:password@/dbname"), &gorm.Config{}) if err != nil { panic("failed to connect database") }
type User struct { ID uint `gorm:"primaryKey"` Name string `gorm:"size:100"` Age int `gorm:"default:18"` Email string `gorm:"unique"` CreatedAt time.Time UpdatedAt time.Time }
db.AutoMigrate(&User{}) AutoMigrate() 的功能 创建表:如果表不存在,AutoMigrate() 会根据结构体定义自动创建表。 更新表结构:如果表已经存在,AutoMigrate() 会检查表结构是否与结构体定义匹配,若不匹配(例如新增了字段),则自动更新表结构。 保留现有数据:在更新表结构时,AutoMigrate() 不会删除已有的表数据。
user := User{Name: "John", Age: 25, Email: "john@example.com"} result := db.Create(&user)
users := []User{ {Name: "Alice", Age: 22, Email: "alice@example.com"}, {Name: "Bob", Age: 30, Email: "bob@example.com"}, } db.Create(&users)
var user User db.First(&user, 1)
var users []User db.Find(&users)
var users []User db.Where("age > ?", 25).Find(&users)
db.Model(&user).Update("Age", 26)
db.Model(&user).Updates(User{Age: 26, Email: "newemail@example.com"})
db.Delete(&user)
db.Where("name = ?", "John").Delete(&User{})
|