gdb 模块使用了非常灵活且扩展性强的接口设计,接口设计允许开发者可以非常方便地自定义实现和替换接口定义中的任何方法。

DB 接口

接口文档: https://pkg.go.dev/github.com/gogf/gf/v2/database/gdb#DB

DB 接口是数据库操作的核心接口,也是我们通过 ORM 操作数据库时最常用的接口,这里主要对接口的几个重要方法做说明:

  1. Open 方法用于创建特定的数据库连接对象,返回的是标准库的 *sql.DB 通用数据库对象。
  2. Do* 系列方法的第一个参数 linkLink 接口对象,该对象在 master-slave 模式下可能是一个主节点对象,也可能是从节点对象,因此如果在继承的驱动对象实现中使用该 link 参数时,注意当前的运行模式。 slave 节点在大部分的数据库主从模式中往往是不可写的。
  3. HandleSqlBeforeCommit 方法将会在每一条 SQL 提交给数据库服务端执行时被调用做一些提交前的回调处理。
  4. 其他接口方法详见接口文档或者源码文件。

DB 接口关系

ORM接口开发 - 图1

GoFrame ORM Relations

Driver 接口

接口文档: https://pkg.go.dev/github.com/gogf/gf/v2/database/gdb#Driver

开发者自定义的驱动需要实现以下接口:

  1. // Driver is the interface for integrating sql drivers into package gdb.
  2. type Driver interface {
  3. // New creates and returns a database object for specified database server.
  4. New(core *Core, node *ConfigNode) (DB, error)
  5. }

其中的 New 方法用于根据 Core 数据库基础对象以及 ConfigNode 配置对象创建驱动对应的数据库操作对象,需要注意的是,返回的数据库对象需要实现 DB 接口。而数据库基础对象 Core 已经实现了 DB 接口,因此开发者只需要”继承” Core 对象,然后根据需要覆盖对应的接口实现方法即可。

相关文档

📄️ ORM接口开发-回调处理在使用GoFrame框架进行ORM接口开发时,通过自定义回调处理来对SQL语句进行日志记录或鉴权。通过实现并覆盖DoQuery、DoExec等接口方法,开发者可以注入自定义逻辑到默认实现中。示例中展示了如何自定义MySQL驱动以记录执行的SQL语句,并配置gdb以使用该驱动。

📄️ ORM接口开发-驱动开发在GoFrame框架中进行ORM接口开发,特别是数据库驱动的开发和注册。通过实现gdb模块的接口,可以新增GoFrame默认不支持的第三方数据库驱动或对已有支持的驱动进行定制化修改,实现上层业务操作的一致性。本文档提供了详细的步骤和示例代码,帮助开发者快速上手。