多数据库支持
文件配置
在配置文件中新增db-list选项 db-list中每一项与主库配置结构一致(同为 GeneralDB),在此基础上多出type、alias-name、disable三个字段
yaml
db-list:
- disable: false # 是否禁用,填true将不被初始化
type: "" # 数据库的类型,目前支持mysql、pgsql、mssql、oracle
alias-name: "" # 数据库的名称,注意: alias-name 需要在db-list中唯一
path: ''
port: ''
config: ''
db-name: ''
username: ''
password: ''
max-idle-conns: 10
max-open-conns: 100
conn-max-lifetime: 0 # 连接最长复用时间,单位秒
log-mode: ""
log-zap: false使用
在config.yaml中正确配置db-list参数后,main.go的初始化流程会自动调用initialize.DBList()完成多数据库初始化,无需手动添加。
初始化后的db对象存放在global.GVA_DBList(类型为map[string]*gorm.DB)中,使用时根据配置的alias-name从 global.GetGlobalDBByDBName(alias-name)或者global.MustGetGlobalDBByDBName(alias-name)方法中获取,两个方法的区别是MustGetGlobalDBByDBName会在alias-name对应db对象不存在时panic
注意
- 不要直接操作 global.GVA_DBList
- 数据权限 GORM 回调会同时注册到主库与
db-list中的全部连接(见initialize/data_scope.go的RegisterDataScopeCallbacks)


