驱动接口设计特点
驱动层设计很简单,没有并发锁的控制
驱动层的设计是基于单个连接的,没有考虑连接池
驱动层事务Tx和Stmt是独立分离的,Tx只有两个简单的方法就是Commit() 和Rollback()
mysql 驱动 github.com/go-sql-driver/mysql注册过程:
驱动层设计很简单,没有并发锁的控制
驱动层的设计是基于单个连接的,没有考虑连接池
驱动层事务Tx和Stmt是独立分离的,Tx只有两个简单的方法就是Commit() 和Rollback()
驱动的具体实现者只需要在单个连接上实现驱动层的API接口即可
driver包的数据结构
调用关系
驱动注册
具体的数据库驱动只需要按照接口层的定义,实现api,然后在sql包的全局驱动切片sql.drivers中注册即可。
27 var ( 28 driversMu sync.RWMutex 29 drivers = make(map[string]driver.Driver) 30 ) 38 func Register(name string, driver driver.Driver) {
mysql 驱动 github.com/go-sql-driver/mysql注册过程:
src/github.com/go-sql-driver/mysql/driver.go
165 func init() { 166 sql.Register("mysql", &MySQLDriver{}) 167 } ~
有疑问加站长微信联系(非本文作者)