GORM(Go Object Relational Mapper)是一個(gè)用于Go語(yǔ)言的ORM庫(kù),它支持多種數(shù)據(jù)庫(kù)。GORM提供了一系列方法和功能來(lái)執(zhí)行常見(jiàn)的SQL操作。以下是GORM支持的一些主要類型的SQL操作:
創(chuàng)建(Create):用于向數(shù)據(jù)庫(kù)中插入新記錄。
db.Create(&user)
查詢(Query):用于從數(shù)據(jù)庫(kù)中檢索記錄。
db.First(&user, 1) // 根據(jù)整型主鍵查找
db.First(&user, "name = ?", "John") // 查找名為John的用戶
db.Find(&users) // 獲取所有用戶
更新(Update):用于修改數(shù)據(jù)庫(kù)中的記錄。
db.Model(&user).Update("name", "NewName") // 更新user的name為NewName
db.Model(&user).Updates(User{Name: "NewName", Age: 18}) // 更新user的多個(gè)字段
刪除(Delete):用于從數(shù)據(jù)庫(kù)中刪除記錄。
db.Delete(&user, 1) // 刪除主鍵為1的用戶
db.Delete(&user, "name = ?", "John") // 刪除名為John的用戶
關(guān)聯(lián)(Associations):用于處理模型之間的關(guān)系,如一對(duì)一、一對(duì)多、多對(duì)多等。
db.Model(&user).Association("Orders").Append(&order) // 將order添加到user的Orders關(guān)聯(lián)中
db.Model(&user).Association("Orders").Delete(&order) // 從user的Orders關(guān)聯(lián)中刪除order
db.Model(&user).Association("Orders").Replace(&orders) // 替換user的Orders關(guān)聯(lián)為orders
事務(wù)(Transactions):用于在一組操作中保持?jǐn)?shù)據(jù)的一致性。
tx := db.Begin()
tx.Create(&user)
tx.Create(&order)
tx.Commit() // 提交事務(wù)
tx.Rollback() // 回滾事務(wù)
遷移(Migrations):用于自動(dòng)創(chuàng)建或修改數(shù)據(jù)庫(kù)表結(jié)構(gòu)。
db.AutoMigrate(&User{}, &Order{}) // 自動(dòng)遷移User和Order模型
預(yù)加載(Preloading):用于自動(dòng)填充關(guān)聯(lián)數(shù)據(jù)。
db.Preload("Orders").Find(&users) // 預(yù)加載用戶的訂單信息
插件(Plugins):GORM支持插件擴(kuò)展,可以使用第三方插件為GORM添加新功能。
這些操作只是GORM支持的一部分,GORM還提供了許多其他功能和選項(xiàng),如鉤子(Hooks)、日志(Logger)、錯(cuò)誤處理(Error Handling)等。你可以查閱GORM的官方文檔以獲取更多詳細(xì)信息和示例。