package database import ( "database/sql" "github.com/beego/beego/v2/core/logs" ) type DataBase interface { Exec(query string, args ...interface{}) (sql.Result, error) } type Tx interface { Commit() error Rollback() error Exec(query string, args ...interface{}) (sql.Result, error) Query(query string, args ...interface{}) (*sql.Rows, error) } var dbs = make(map[string]DBInstance) type DBInstance func() DataBase func GetDBInstance(name string) (db DataBase) { instanceFunc, ok := dbs[name] if !ok { logs.Error("db: 未知数据源类型 %q ", name) return nil } db = instanceFunc() return } func Register(name string, adapter DBInstance) { if adapter == nil { panic("不支持的数据源格式") } if _, ok := dbs[name]; ok { panic("数据源已注册" + name) } dbs[name] = adapter }