GoFrame 接口開發(fā)-驅(qū)動(dòng)開發(fā)

2022-04-02 14:24 更新

我們可以通過?gdb?模塊的接口設(shè)計(jì)實(shí)現(xiàn):新增框架默認(rèn)不支持的第三方數(shù)據(jù)庫驅(qū)動(dòng)、對(duì)已有支持的驅(qū)動(dòng)進(jìn)行定制化修改等。

驅(qū)動(dòng)注冊(cè)

之前我們有提到?Driver?的驅(qū)動(dòng)接口,在實(shí)現(xiàn)該接口之后,我們可以通過以下方法注冊(cè)自定義驅(qū)動(dòng)到?gdb?模塊:

// Register registers custom database driver to gdb.
func Register(name string, driver Driver) error

其中的驅(qū)動(dòng)名稱?name?可以是已有的驅(qū)動(dòng)名稱,例如?mysql?, ?mssql?, ?pgsql?等等,當(dāng)出現(xiàn)同名的驅(qū)動(dòng)注冊(cè)時(shí),新的驅(qū)動(dòng)將會(huì)覆蓋老的驅(qū)動(dòng)。

驅(qū)動(dòng)實(shí)現(xiàn)

開發(fā)一個(gè)自定義的驅(qū)動(dòng)并注冊(cè)到?gdb?模塊中非常簡單,可以參考?gdb?模塊源碼中已對(duì)接的數(shù)據(jù)庫類型代碼示例:https://github.com/gogf/gf/tree/master/contrib/drivers

需要說明的是,最常見的驅(qū)動(dòng)開發(fā)或者修改方式是直接繼承于現(xiàn)有?*Core?類型,因?yàn)樵?Driver?接口中會(huì)傳遞該類型的對(duì)象,例如:

// DriverMysql is the driver for mysql database.
type DriverMysql struct {
	*Core
}

// New creates and returns a database object for mysql.
// It implements the interface of gdb.Driver for extra database driver installation.
func (d *DriverMysql) New(core *Core, node *ConfigNode) (DB, error) {
	return &DriverMysql{
		Core: core,
	}, nil
}


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)