GORM 数据访问
import ( "gorm.io/driver/sqlite" "gorm.io/gorm")
type User struct { gorm.Model Name string Email string `gorm:"uniqueIndex"` Age int}
func main() { db, err := gorm.Open(sqlite.Open("test.db"), &gorm.Config{}) if err != nil { panic("数据库连接失败") }
db.AutoMigrate(&User{})}CRUD 操作
Section titled “CRUD 操作”// 创建db.Create(&User{Name: "Alice", Email: "alice@test.com", Age: 25})
// 查询var user Userdb.First(&user, 1) // 按主键db.First(&user, "email = ?", "alice@test.com") // 条件查询
var users []Userdb.Where("age > ?", 20).Find(&users) // 条件筛选db.Limit(10).Offset(0).Find(&users) // 分页
// 更新db.Model(&user).Update("Age", 26)db.Model(&user).Updates(User{Age: 26, Name: "Alice W."})
// 删除db.Delete(&user)type Order struct { gorm.Model UserID uint Item string Price float64}
// 预加载db.Preload("Orders").Find(&users)
// Join 查询db.Joins("JOIN orders ON orders.user_id = users.id"). Where("orders.price > ?", 100). Find(&users)err := db.Transaction(func(tx *gorm.DB) error { if err := tx.Create(&User{Name: "Bob"}).Error; err != nil { return err } if err := tx.Create(&Order{Item: "Book", Price: 29.9}).Error; err != nil { return err } return nil})