W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
?GoFrame
?框架的?ORM
?功能由?gdb
?模塊實現(xiàn),用于常用關系型數(shù)據(jù)庫的?ORM
?操作。
?gdb
?數(shù)據(jù)庫引擎底層采用了鏈接池設計,當鏈接不再使用時會自動關閉,因此鏈接對象不用的時候不需要顯式使用?Close
?方法關閉數(shù)據(jù)庫連接。
注意:為提高數(shù)據(jù)庫操作安全性,在?ORM
?操作中不建議直接將參數(shù)拼接成?SQL
?字符串執(zhí)行,建議使用預處理的方式(充分使用?占位符)來傳遞?SQL
?參數(shù)。?gdb
?的底層實現(xiàn)中均采用的是預處理的方式處理開發(fā)者傳遞的參數(shù),以充分保證數(shù)據(jù)庫操作安全性。
接口文檔:
https://pkg.go.dev/github.com/gogf/gf/v2/database/gdb
?GoFrame ORM
?組件具有以下顯著特點:
SQL
?方法操作、?ORM
?鏈式操作兩種方式。
OpenTelemetry
?可觀測性:鏈路跟蹤、日志記錄、指標上報。
Scan
?方法自動識別?Map/Struct
?接收查詢結果,自動化查詢結果初始化、結構體類型轉換。
nil
?識別為空,無需?sql.ErrNoRows
?識別查詢數(shù)據(jù)為空的情況。
Map/Struct/Slice
?參數(shù)類型中的字段識別、過濾,大大提高查詢條件輸入、結果接收。
GoFrame
?框架層面的?DAO
?設計,全自動化?Model/DAO
?代碼生成,極大提高開發(fā)效率。
DryRun
?、自定義?Handler
?、自動類型類型轉換、自定義接口轉換等等高級特性。
?GoFrame ORM Features
?
?GoFrame ORM Dependencies
?
獲取數(shù)據(jù)庫操作對象有三種方式,一種是使用?g.DB
?方法(推薦),一種是使用原生?gdb.New
?方法,還有一種是使用包原生單例方法?gdb.Instance
?,而第一種是推薦的使用方式。這三種方式的區(qū)別如下:
g.DB
?對象管理方式獲取的是單例對象,整合了配置文件的管理功能,支持配置文件熱更新。
gdb.New
?是根據(jù)給定的數(shù)據(jù)庫節(jié)點配置創(chuàng)建一個新的數(shù)據(jù)庫對象(非單例),無法使用配置文件。
gdb.Instance
?是包原生單例管理方法,需要結合配置方法一起使用,通過分組名稱(非必需)獲取對應配置的數(shù)據(jù)庫單例對象。有這么多對象獲取方式原因在于?GoFrame
?是一個模塊化設計的框架,每個模塊皆可單獨使用。
db, err := gdb.New(gdb.ConfigNode{
Link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test",
})
// 獲取默認配置的數(shù)據(jù)庫對象(配置名稱為"default")
db := g.DB()
// 獲取配置分組名稱為"user"的數(shù)據(jù)庫對象
db := g.DB("user")
// 使用原生單例管理方法獲取數(shù)據(jù)庫對象單例
db, err := gdb.Instance()
db, err := gdb.Instance("user")
由于go標準庫的數(shù)據(jù)庫操作對象采用接口實現(xiàn),因此提供了非常好的可擴展性和兼容性??蚣芤阎С值牡谌綌?shù)據(jù)庫驅動請參考:https://github.com/gogf/gf/tree/master/contrib/drivers
額外接入新的數(shù)據(jù)庫相當方便,可參考源碼中關于?PostgreSQL
?、?SQLite
?、?Oracle
?、?SQL Server
?的接入方式。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: