日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame 數(shù)據(jù)庫ORM-基本介紹

?GOFrame?框架的?ORM?功能由?gdb?模塊實現(xiàn),用于常用關(guān)系型數(shù)據(jù)庫的?ORM?操作。

?gdb?數(shù)據(jù)庫引擎底層采用了鏈接池設(shè)計,當(dāng)鏈接不再使用時會自動關(guān)閉,因此鏈接對象不用的時候不需要顯式使用?Close?方法關(guān)閉數(shù)據(jù)庫連接。

注意:為提高數(shù)據(jù)庫操作安全性,在?ORM?操作中不建議直接將參數(shù)拼接成?SQL?字符串執(zhí)行,建議使用預(yù)處理的方式(充分使用?占位符)來傳遞?SQL?參數(shù)。?gdb?的底層實現(xiàn)中均采用的是預(yù)處理的方式處理開發(fā)者傳遞的參數(shù),以充分保證數(shù)據(jù)庫操作安全性。

接口文檔:

https://pkg.go.dev/github.com/gogf/gf/v2/database/gdb

組件特性

?GoFrame ORM?組件具有以下顯著特點: 

  1. 全自動化支持嵌套事務(wù)。
  2. 面向接口化設(shè)計、易使用易擴(kuò)展。
  3. 內(nèi)置支持主流數(shù)據(jù)庫類型驅(qū)動,并易于擴(kuò)展。
  4. 強大的配置管理,使用框架統(tǒng)一的配置組件。
  5. 支持單例模式獲取配置同一分組數(shù)據(jù)庫對象。
  6. 支持原生?SQL?方法操作、?ORM?鏈?zhǔn)讲僮鲀煞N方式。
  7. 支持?OpenTelemetry?可觀測性:鏈路跟蹤、日志記錄、指標(biāo)上報。
  8. 通過?Scan?方法自動識別?Map/Struct?接收查詢結(jié)果,自動化查詢結(jié)果初始化、結(jié)構(gòu)體類型轉(zhuǎn)換。
  9. 通過返回結(jié)果?nil?識別為空,無需?sql.ErrNoRows?識別查詢數(shù)據(jù)為空的情況。
  10. 全自動化的結(jié)構(gòu)體屬性-字段映射,無需顯示定義結(jié)構(gòu)體標(biāo)簽維護(hù)屬性-字段映射關(guān)系。
  11. 自動化的給定?Map/Struct/Slice?參數(shù)類型中的字段識別、過濾,大大提高查詢條件輸入、結(jié)果接收。
  12. 完美支持?GoFrame?框架層面的?DAO?設(shè)計,全自動化?Model/DAO?代碼生成,極大提高開發(fā)效率。
  13. 支持調(diào)試模式、日志輸出、?DryRun?、自定義?Handler?、自動類型類型轉(zhuǎn)換、自定義接口轉(zhuǎn)換等等高級特性。
  14. 支持查詢緩存、軟刪除、自動化時間更新、模型關(guān)聯(lián)、數(shù)據(jù)庫集群配置(軟件主從模式)等等實用特性。

知識圖譜

?GoFrame ORM Features?

組件關(guān)聯(lián)

?GoFrame ORM Dependencies?

g.DB與gdb.New、gdb.Instance

獲取數(shù)據(jù)庫操作對象有三種方式,一種是使用?g.DB?方法(推薦),一種是使用原生?gdb.New?方法,還有一種是使用包原生單例方法?gdb.Instance?,而第一種是推薦的使用方式。這三種方式的區(qū)別如下:

  • ?g.DB?對象管理方式獲取的是單例對象,整合了配置文件的管理功能,支持配置文件熱更新。
  • ?gdb.New?是根據(jù)給定的數(shù)據(jù)庫節(jié)點配置創(chuàng)建一個新的數(shù)據(jù)庫對象(非單例),無法使用配置文件。
  • ?gdb.Instance?是包原生單例管理方法,需要結(jié)合配置方法一起使用,通過分組名稱(非必需)獲取對應(yīng)配置的數(shù)據(jù)庫單例對象。

有這么多對象獲取方式原因在于?GoFrame?是一個模塊化設(shè)計的框架,每個模塊皆可單獨使用。

New創(chuàng)建數(shù)據(jù)庫對象

db, err := gdb.New(gdb.ConfigNode{
	Link: "mysql:root:12345678@tcp(127.0.0.1:3306)/test",
})

獲取數(shù)據(jù)庫對象單例

// 獲取默認(rèn)配置的數(shù)據(jù)庫對象(配置名稱為"default")
db := g.DB()

// 獲取配置分組名稱為"user"的數(shù)據(jù)庫對象
db := g.DB("user")


// 使用原生單例管理方法獲取數(shù)據(jù)庫對象單例
db, err := gdb.Instance()
db, err := gdb.Instance("user")

內(nèi)置支持的數(shù)據(jù)庫類型

由于go標(biāo)準(zhǔn)庫的數(shù)據(jù)庫操作對象采用接口實現(xiàn),因此提供了非常好的可擴(kuò)展性和兼容性??蚣芤阎С值牡谌綌?shù)據(jù)庫驅(qū)動請參考:https://github.com/gogf/gf/tree/master/contrib/drivers

額外接入新的數(shù)據(jù)庫相當(dāng)方便,可參考源碼中關(guān)于?PostgreSQL?、?SQLite?、?Oracle?、?SQL Server?的接入方式。


文章名稱:創(chuàng)新互聯(lián)GoFrame教程:GoFrame 數(shù)據(jù)庫ORM-基本介紹
本文網(wǎng)址:http://www.dlmjj.cn/article/dphcohg.html