掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
?GOFrame?框架的?ORM?功能由?gdb?模塊實(shí)現(xiàn),用于常用關(guān)系型數(shù)據(jù)庫(kù)的?ORM?操作。

?gdb?數(shù)據(jù)庫(kù)引擎底層采用了鏈接池設(shè)計(jì),當(dāng)鏈接不再使用時(shí)會(huì)自動(dòng)關(guān)閉,因此鏈接對(duì)象不用的時(shí)候不需要顯式使用?Close?方法關(guān)閉數(shù)據(jù)庫(kù)連接。
注意:為提高數(shù)據(jù)庫(kù)操作安全性,在?ORM?操作中不建議直接將參數(shù)拼接成?SQL?字符串執(zhí)行,建議使用預(yù)處理的方式(充分使用?占位符)來(lái)傳遞?SQL?參數(shù)。?gdb?的底層實(shí)現(xiàn)中均采用的是預(yù)處理的方式處理開(kāi)發(fā)者傳遞的參數(shù),以充分保證數(shù)據(jù)庫(kù)操作安全性。
接口文檔:
https://pkg.go.dev/github.com/gogf/gf/v2/database/gdb
?GoFrame ORM?組件具有以下顯著特點(diǎn):
SQL?方法操作、?ORM?鏈?zhǔn)讲僮鲀煞N方式。OpenTelemetry?可觀測(cè)性:鏈路跟蹤、日志記錄、指標(biāo)上報(bào)。Scan?方法自動(dòng)識(shí)別?Map/Struct?接收查詢結(jié)果,自動(dòng)化查詢結(jié)果初始化、結(jié)構(gòu)體類型轉(zhuǎn)換。nil?識(shí)別為空,無(wú)需?sql.ErrNoRows?識(shí)別查詢數(shù)據(jù)為空的情況。Map/Struct/Slice?參數(shù)類型中的字段識(shí)別、過(guò)濾,大大提高查詢條件輸入、結(jié)果接收。GoFrame?框架層面的?DAO?設(shè)計(jì),全自動(dòng)化?Model/DAO?代碼生成,極大提高開(kāi)發(fā)效率。DryRun?、自定義?Handler?、自動(dòng)類型類型轉(zhuǎn)換、自定義接口轉(zhuǎn)換等等高級(jí)特性。?GoFrame ORM Features?
?GoFrame ORM Dependencies?
獲取數(shù)據(jù)庫(kù)操作對(duì)象有三種方式,一種是使用?g.DB?方法(推薦),一種是使用原生?gdb.New?方法,還有一種是使用包原生單例方法?gdb.Instance?,而第一種是推薦的使用方式。這三種方式的區(qū)別如下:
g.DB?對(duì)象管理方式獲取的是單例對(duì)象,整合了配置文件的管理功能,支持配置文件熱更新。gdb.New?是根據(jù)給定的數(shù)據(jù)庫(kù)節(jié)點(diǎn)配置創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)對(duì)象(非單例),無(wú)法使用配置文件。gdb.Instance?是包原生單例管理方法,需要結(jié)合配置方法一起使用,通過(guò)分組名稱(非必需)獲取對(duì)應(yīng)配置的數(shù)據(jù)庫(kù)單例對(duì)象。有這么多對(duì)象獲取方式原因在于?GoFrame?是一個(gè)模塊化設(shè)計(jì)的框架,每個(gè)模塊皆可單獨(dú)使用。
db, err := gdb.New(gdb.ConfigNode{
Link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test",
})// 獲取默認(rèn)配置的數(shù)據(jù)庫(kù)對(duì)象(配置名稱為"default")
db := g.DB()
// 獲取配置分組名稱為"user"的數(shù)據(jù)庫(kù)對(duì)象
db := g.DB("user")
// 使用原生單例管理方法獲取數(shù)據(jù)庫(kù)對(duì)象單例
db, err := gdb.Instance()
db, err := gdb.Instance("user")由于go標(biāo)準(zhǔn)庫(kù)的數(shù)據(jù)庫(kù)操作對(duì)象采用接口實(shí)現(xiàn),因此提供了非常好的可擴(kuò)展性和兼容性。框架已支持的第三方數(shù)據(jù)庫(kù)驅(qū)動(dòng)請(qǐng)參考:https://github.com/gogf/gf/tree/master/contrib/drivers
額外接入新的數(shù)據(jù)庫(kù)相當(dāng)方便,可參考源碼中關(guān)于?PostgreSQL?、?SQLite?、?Oracle?、?SQL Server?的接入方式。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問(wèn)/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流