MySQL GORM 是針對(duì)數(shù)據(jù)訪問(wèn)的一套 ORM 框架。ORM(Object Relational Mapping)的概念是將關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)映射為對(duì)象,并將各種操作(增刪改查)封裝到對(duì)象中,使得操作數(shù)據(jù)庫(kù)的過(guò)程更加方便簡(jiǎn)單。MySQL GORM 是基于 Golang 語(yǔ)言的。
Gorm 提供了非常強(qiáng)大靈活的查詢語(yǔ)言,支持原生 SQL 查詢和鏈?zhǔn)讲樵冋Z(yǔ)法,提供 CRUD 和 表關(guān)聯(lián)、預(yù)加載和事務(wù)功能。代碼實(shí)例如下:
import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" "log" ) type User struct { gorm.Model Name string Age int } db, err := gorm.Open("mysql", "username:password@/db_name?charset=utf8&parseTime=True&loc=Local") if err != nil { log.Fatal(err) } defer db.Close() // 創(chuàng)建表、自動(dòng)遷移 db.AutoMigrate(&User{}) // 新增數(shù)據(jù) user := User{Name: "joe", Age: 18} db.Create(&user) // 查詢 var result User db.First(&result, "name = ?", "joe") // 更新 db.Model(&result).Update("Age", 20) // 刪除 db.Delete(&result)
以上代碼演示了 MySQL GORM 的 CRUD 操作。其中,定義了一個(gè) User 結(jié)構(gòu)體,并與數(shù)據(jù)庫(kù)中的 users 表進(jìn)行映射;創(chuàng)建表時(shí),GORM 會(huì)利用 tag 自動(dòng)為表和字段加上相應(yīng)的約束;使用 GORM 的鉤子函數(shù),可自動(dòng)為 Create、Update、Delete 等操作設(shè)置 CreatedAt、UpdatedAt、DeletedAt 時(shí)間戳,實(shí)現(xiàn)軟刪除。
總的來(lái)說(shuō),MySQL GORM 簡(jiǎn)化了數(shù)據(jù)庫(kù)的操作,提高了開(kāi)發(fā)效率,也是 Golang 開(kāi)發(fā)者不可或缺的一款 ORM 框架。