import "github.com/gogf/gf/g/database/gdb"
Package gdb provides ORM features for popular relationship databases.
数据库ORM, 默认内置支持MySQL, 其他数据库需要手动import对应的数据库引擎第三方包.
Copyright 2017 gf Author(https://github.com/gogf/gf). All Rights Reserved.
This Source Code Form is subject to the terms of the MIT License. If a copy of the MIT was not distributed with this file, You can obtain one at https://github.com/gogf/gf.
@author wenzi1<liyz23@qq.com> @date 20181109 说明:
1.需要导入sqlserver驱动: github.com/denisenkom/go-mssqldb 2.不支持save/replace方法 3.不支持LastInsertId方法
Copyright 2017 gf Author(https://github.com/gogf/gf). All Rights Reserved.
This Source Code Form is subject to the terms of the MIT License. If a copy of the MIT was not distributed with this file, You can obtain one at https://github.com/gogf/gf.
@author wenzi1<liyz23@qq.com> @date 20181026 说明:
1.需要导入oracle驱动: github.com/mattn/go-oci8 2.不支持save/replace方法,可以调用这2个方法估计会报错,还没测试过,(应该是可以通过oracle的merge来实现这2个功能的,还没仔细研究) 3.不支持LastInsertId方法
gdb.go gdb_base.go gdb_batch_result.go gdb_config.go gdb_func.go gdb_model.go gdb_mssql.go gdb_mysql.go gdb_oracle.go gdb_pgsql.go gdb_sqlite.go gdb_structure.go gdb_transaction.go gdb_type_record.go gdb_type_result.go
const ( OPTION_INSERT = 0 OPTION_REPLACE = 1 OPTION_SAVE = 2 OPTION_IGNORE = 3 )
const ( DEFAULT_GROUP_NAME = "default" // 默认配置名称 )
func AddConfigGroup(group string, nodes ConfigGroup)
添加数据库服务器集群配置
func AddConfigNode(group string, node ConfigNode)
添加一台数据库服务器配置
func AddDefaultConfigGroup(nodes ConfigGroup)
添加默认链接的数据库服务器集群配置
func AddDefaultConfigNode(node ConfigNode)
添加默认链接的一台数据库服务器配置
设置当前应用的数据库配置信息,进行全局数据库配置覆盖操作
设置默认链接的数据库链接配置项(默认是 default)
type Config map[string]ConfigGroup
数据库配置
type ConfigGroup []ConfigNode
数据库集群配置
func GetConfig(group string) ConfigGroup
添加一台数据库服务器配置
type ConfigNode struct { Host string // 地址 Port string // 端口 User string // 账号 Pass string // 密码 Name string // 数据库名称 Type string // 数据库类型:mysql, sqlite, mssql, pgsql, oracle(目前仅支持mysql) Role string // (可选,默认为master)数据库的角色,用于主从操作分离,至少需要有一个master,参数值:master, slave Charset string // (可选,默认为 utf8)编码,默认为 utf8 Priority int // (可选)用于负载均衡的权重计算,当集群中只有一个节点时,权重没有任何意义 Linkinfo string // (可选)自定义链接信息,当该字段被设置值时,以上链接字段(Host,Port,User,Pass,Name)将失效(该字段是一个扩展功能) MaxIdleConnCount int // (可选)连接池最大限制的连接数 MaxOpenConnCount int // (可选)连接池最大打开的连接数 MaxConnLifetime int // (可选,单位秒)连接对象可重复使用的时间长度 }
数据库单项配置
func (node *ConfigNode) String() string
节点配置转换为字符串
type DB interface { // 建立数据库连接方法(开发者一般不需要直接调用) Open(config *ConfigNode) (*sql.DB, error) // SQL操作方法 API Query(query string, args ...interface{}) (*sql.Rows, error) Exec(sql string, args ...interface{}) (sql.Result, error) Prepare(sql string, execOnMaster ...bool) (*sql.Stmt, error) // 数据库查询 GetAll(query string, args ...interface{}) (Result, error) GetOne(query string, args ...interface{}) (Record, error) GetValue(query string, args ...interface{}) (Value, error) GetCount(query string, args ...interface{}) (int, error) GetStruct(obj interface{}, query string, args ...interface{}) error // 创建底层数据库master/slave链接对象 Master() (*sql.DB, error) Slave() (*sql.DB, error) // Ping PingMaster() error PingSlave() error // 开启事务操作 Begin() (*TX, error) // 数据表插入/更新/保存操作 Insert(table string, data Map) (sql.Result, error) Replace(table string, data Map) (sql.Result, error) Save(table string, data Map) (sql.Result, error) // 数据表插入/更新/保存操作(批量) BatchInsert(table string, list List, batch int) (sql.Result, error) BatchReplace(table string, list List, batch int) (sql.Result, error) BatchSave(table string, list List, batch int) (sql.Result, error) // 数据修改/删除 Update(table string, data interface{}, condition interface{}, args ...interface{}) (sql.Result, error) Delete(table string, condition interface{}, args ...interface{}) (sql.Result, error) // 创建链式操作对象(Table为From的别名) Table(tables string) *Model From(tables string) *Model // 设置管理 SetDebug(debug bool) SetSchema(schema string) GetQueriedSqls() []*Sql PrintQueriedSqls() SetMaxIdleConns(n int) SetMaxOpenConns(n int) SetConnMaxLifetime(n int) // contains filtered or unexported methods }
数据库操作接口
使用默认/指定分组配置进行连接,数据库集群配置项:default
关联数组列表(索引从0开始的数组),绑定多条记录(使用别名)
关联数组,绑定一条数据表记录(使用别名)
type Model struct {
// contains filtered or unexported fields
}
数据库链式操作模型对象
链式操作,查询所有记录
链式操作,添加AND条件到Where中
设置批处理的大小
查询缓存/清除缓存操作,需要注意的是,事务查询不支持缓存。 当time < 0时表示清除缓存, time=0时表示不过期, time > 0时表示过期时间,time过期时间单位:秒; name表示自定义的缓存名称,便于业务层精准定位缓存项(如果业务层需要手动清理时,必须指定缓存名称), 例如:查询缓存时设置名称,清理缓存时可以给定清理的缓存名称进行精准清理。
组块结果集 @author ymrjqyy @author 2018-08-15
克隆一个当前对象
链式操作,查询数量,fields可以为空,也可以自定义查询字段, 当给定自定义查询字段时,该字段必须为数量结果,否则会引起歧义,使用如:md.Fields("COUNT(id)")
链式操作,操作数据记录项,可以是string/Map, 也可以是:key,value,key,value,...
链式操作, CURD - Delete
链式操作,查询字段
链式操作,过滤字段
链式操作,翻页 @author ymrjqyy
链式操作,group by
链式操作,内联表
链式操作, CURD - Insert/BatchInsert
链式操作,左联表
链式操作,limit
链式操作,查询单条记录
链式操作,添加OR条件到Where中
链式操作,order by
链式操作, CURD - Replace/BatchReplace
链式操作,右联表
链式操作, CURD - Save/BatchSave
链式操作,select
链式操作,查询单条记录,并自动转换为struct对象
链式操作, CURD - Update
链式操作,查询字段值
链式操作,condition,支持string & gdb.Map
返回数据表记录Map
将记录结果转换为JSON字符串
将Record转换为Map,其中最主要的区别是里面的键值被强制转换为string类型,方便json处理
将Map变量映射到指定的struct对象中,注意参数应当是一个对象的指针
将记录结果转换为XML字符串
返回数据表记录List
将结果列表按照指定的字段值做map[int]Map
将结果列表按照指定的字段值做map[int]Record
将结果集转换为JSON字符串
将结果集转换为List类型返回,便于json处理
将结果列表按照指定的字段值做map[string]Map
将结果列表按照指定的字段值做map[string]Record
将结果列表按照指定的字段值做map[uint]Map
将结果列表按照指定的字段值做map[uint]Record
将结果集转换为XML字符串
type Sql struct { Sql string // SQL语句(可能带有预处理占位符) Args []interface{} // 预处理参数值列表 Error error // 执行结果(nil为成功) Start int64 // 执行开始时间(毫秒) End int64 // 执行结束时间(毫秒) Func string // 执行方法 }
执行的SQL对象
type TX struct {
// contains filtered or unexported fields
}
数据库事务对象
CURD操作:批量数据指定批次量写入
CURD操作:批量数据指定批次量写入, 如果数据存在(主键或者唯一索引),那么删除后重新写入一条
CURD操作:批量数据指定批次量写入, 如果数据存在(主键或者唯一索引),那么更新,否则写入一条新数据
事务操作,提交
CURD操作:删除数据
(事务)执行一条sql,并返回执行情况,主要用于非查询操作
(事务)链式操作,数据表字段,可支持多个表,以半角逗号连接
数据库查询,获取查询结果集,以列表结构返回
数据库查询,获取查询数量
数据库查询,获取查询结果记录,以关联数组结构返回
数据库查询,获取查询结果记录,自动映射数据到给定的struct对象中
数据库查询,获取查询字段值
CURD操作:单条数据写入, 仅仅执行写入操作,如果存在冲突的主键或者唯一索引,那么报错返回
sql预处理,执行完成后调用返回值sql.Stmt.Exec完成sql操作
(事务)数据库sql查询操作,主要执行查询
CURD操作:单条数据写入, 如果数据存在(主键或者唯一索引),那么删除后重新写入一条
事务操作,回滚
CURD操作:单条数据写入, 如果数据存在(主键或者唯一索引),那么更新,否则写入一条新数据
(事务)链式操作,数据表字段,可支持多个表,以半角逗号连接
func (tx *TX) Update(table string, data interface{}, condition interface{}, args ...interface{}) (sql.Result, error)
CURD操作:数据更新,统一采用sql预处理 data参数支持字符串或者关联数组类型,内部会自行做判断处理
返回数据表记录值
Package gdb imports 22 packages (graph) and is imported by 3 packages. Updated 2019-02-06. Refresh now. Tools for package owners.