gdb

package
v0.0.0-...-c9a36a8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 27, 2018 License: MIT Imports: 14 Imported by: 0

Documentation

Overview

数据库ORM.

Index

Constants

View Source
const (
	OPTION_INSERT  = 0
	OPTION_REPLACE = 1
	OPTION_SAVE    = 2
	OPTION_IGNORE  = 3
)

Variables

This section is empty.

Functions

func AddConfigGroup

func AddConfigGroup(group string, nodes ConfigGroup)

添加数据库服务器集群配置

func AddConfigNode

func AddConfigNode(group string, node ConfigNode)

添加一台数据库服务器配置

func AddDefaultConfigGroup

func AddDefaultConfigGroup(nodes ConfigGroup)

添加默认链接的数据库服务器集群配置

func AddDefaultConfigNode

func AddDefaultConfigNode(node ConfigNode)

添加默认链接的一台数据库服务器配置

func SetConfig

func SetConfig(c Config)

设置当前应用的数据库配置信息,进行全局数据库配置覆盖操作

func SetDefaultGroup

func SetDefaultGroup(groupName string)

设置默认链接的数据库链接配置项(默认是 default)

Types

type Config

type Config map[string]ConfigGroup

数据库配置

type ConfigGroup

type ConfigGroup []ConfigNode

数据库集群配置

type ConfigNode

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)将失效(该字段是一个扩展功能)
}

数据库单项配置

type Db

type Db struct {
	// contains filtered or unexported fields
}

数据库链接对象

func New

func New(groupName ...string) (*Db, error)

使用默认/指定分组配置进行连接,数据库集群配置项:default

func (*Db) BatchInsert

func (db *Db) BatchInsert(table string, list List, batch int) (sql.Result, error)

CURD操作:批量数据指定批次量写入

func (*Db) BatchReplace

func (db *Db) BatchReplace(table string, list List, batch int) (sql.Result, error)

CURD操作:批量数据指定批次量写入, 如果数据存在(主键或者唯一索引),那么删除后重新写入一条

func (*Db) BatchSave

func (db *Db) BatchSave(table string, list List, batch int) (sql.Result, error)

CURD操作:批量数据指定批次量写入, 如果数据存在(主键或者唯一索引),那么更新,否则写入一条新数据

func (*Db) Begin

func (db *Db) Begin() (*Tx, error)

事务操作,开启,会返回一个底层的事务操作对象链接如需要嵌套事务,那么可以使用该对象,否则请忽略

func (*Db) Close

func (db *Db) Close() error

关闭链接

func (*Db) Delete

func (db *Db) Delete(table string, condition interface{}, args ...interface{}) (sql.Result, error)

CURD操作:删除数据

func (*Db) Exec

func (db *Db) Exec(query string, args ...interface{}) (sql.Result, error)

执行一条sql,并返回执行情况,主要用于非查询操作

func (*Db) From

func (db *Db) From(tables string) *Model

链式操作,数据表字段,可支持多个表,以半角逗号连接

func (*Db) GetAll

func (db *Db) GetAll(query string, args ...interface{}) (Result, error)

数据库查询,获取查询结果集,以列表结构返回

func (*Db) GetCount

func (db *Db) GetCount(query string, args ...interface{}) (int, error)

数据库查询,获取查询数量

func (*Db) GetOne

func (db *Db) GetOne(query string, args ...interface{}) (Record, error)

数据库查询,获取查询结果记录,以关联数组结构返回

func (*Db) GetStruct

func (db *Db) GetStruct(obj interface{}, query string, args ...interface{}) error

数据库查询,获取查询结果记录,自动映射数据到给定的struct对象中

func (*Db) GetValue

func (db *Db) GetValue(query string, args ...interface{}) (Value, error)

数据库查询,获取查询字段值

func (*Db) Insert

func (db *Db) Insert(table string, data Map) (sql.Result, error)

CURD操作:单条数据写入, 仅仅执行写入操作,如果存在冲突的主键或者唯一索引,那么报错返回

func (*Db) PingMaster

func (db *Db) PingMaster() error

ping一下,判断或保持数据库链接(master)

func (*Db) PingSlave

func (db *Db) PingSlave() error

ping一下,判断或保持数据库链接(slave)

func (*Db) Prepare

func (db *Db) Prepare(query string) (*sql.Stmt, error)

sql预处理,执行完成后调用返回值sql.Stmt.Exec完成sql操作 记得调用sql.Stmt.Close关闭操作对象

func (*Db) Query

func (db *Db) Query(query string, args ...interface{}) (*sql.Rows, error)

数据库sql查询操作,主要执行查询

func (*Db) Replace

func (db *Db) Replace(table string, data Map) (sql.Result, error)

CURD操作:单条数据写入, 如果数据存在(主键或者唯一索引),那么删除后重新写入一条

func (*Db) Save

func (db *Db) Save(table string, data Map) (sql.Result, error)

CURD操作:单条数据写入, 如果数据存在(主键或者唯一索引),那么更新,否则写入一条新数据

func (*Db) Select

func (db *Db) Select(tables, fields string, condition interface{}, groupBy, orderBy string, first, limit int, args ...interface{}) (Result, error)

数据表查询,其中tables可以是多个联表查询语句,这种查询方式较复杂,建议使用链式操作

func (*Db) SetMaxIdleConns

func (db *Db) SetMaxIdleConns(n int)

设置数据库连接池中空闲链接的大小

func (*Db) SetMaxOpenConns

func (db *Db) SetMaxOpenConns(n int)

设置数据库连接池最大打开的链接数量

func (*Db) Table

func (db *Db) Table(tables string) *Model

链式操作,数据表字段,可支持多个表,以半角逗号连接

func (*Db) Update

func (db *Db) Update(table string, data interface{}, condition interface{}, args ...interface{}) (sql.Result, error)

CURD操作:数据更新,统一采用sql预处理 data参数支持字符串或者关联数组类型,内部会自行做判断处理

type Link interface {
	// 打开数据库连接,建立数据库操作对象
	Open(c *ConfigNode) (*sql.DB, error)

	// SQL操作方法
	Query(q string, args ...interface{}) (*sql.Rows, error)
	Exec(q string, args ...interface{}) (sql.Result, error)
	Prepare(q string) (*sql.Stmt, error)

	// 数据库查询
	GetAll(q string, args ...interface{}) (Result, error)
	GetOne(q string, args ...interface{}) (Record, error)
	GetValue(q string, args ...interface{}) (Value, error)

	// Ping
	PingMaster() error
	PingSlave() error

	// 连接属性设置
	SetMaxIdleConns(n int)
	SetMaxOpenConns(n int)

	// 开启事务操作
	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

	// 关闭数据库操作对象
	Close() error
	// contains filtered or unexported methods
}

数据库操作接口

type List

type List = []Map

关联数组列表(索引从0开始的数组),绑定多条记录(使用别名)

type Map

type Map = map[string]interface{}

关联数组,绑定一条数据表记录(使用别名)

type Model

type Model struct {
	// contains filtered or unexported fields
}

数据库链式操作模型对象

func (*Model) All

func (md *Model) All() (Result, error)

链式操作,查询所有记录

func (*Model) And

func (md *Model) And(where interface{}, args ...interface{}) *Model

链式操作,添加AND条件到Where中

func (*Model) Batch

func (md *Model) Batch(batch int) *Model

设置批处理的大小

func (*Model) Count

func (md *Model) Count() (int, error)

链式操作,查询数量,fields可以为空,也可以自定义查询字段, 当给定自定义查询字段时,该字段必须为数量结果,否则会引起歧义,如:Fields("COUNT(id)")

func (*Model) Data

func (md *Model) Data(data ...interface{}) *Model

链式操作,操作数据记录项,可以是string/Map, 也可以是:key,value,key,value,...

func (*Model) Delete

func (md *Model) Delete() (sql.Result, error)

链式操作, CURD - Delete

func (*Model) Fields

func (md *Model) Fields(fields string) *Model

链式操作,查询字段

func (*Model) GroupBy

func (md *Model) GroupBy(groupBy string) *Model

链式操作,group by

func (*Model) InnerJoin

func (md *Model) InnerJoin(joinTable string, on string) *Model

链式操作,内联表

func (*Model) Insert

func (md *Model) Insert() (sql.Result, error)

链式操作, CURD - Insert/BatchInsert

func (*Model) LeftJoin

func (md *Model) LeftJoin(joinTable string, on string) *Model

链式操作,左联表

func (*Model) Limit

func (md *Model) Limit(start int, limit int) *Model

链式操作,limit

func (*Model) One

func (md *Model) One() (Record, error)

链式操作,查询单条记录

func (*Model) Or

func (md *Model) Or(where interface{}, args ...interface{}) *Model

链式操作,添加OR条件到Where中

func (*Model) OrderBy

func (md *Model) OrderBy(orderBy string) *Model

链式操作,order by

func (*Model) Replace

func (md *Model) Replace() (sql.Result, error)

链式操作, CURD - Replace/BatchReplace

func (*Model) RightJoin

func (md *Model) RightJoin(joinTable string, on string) *Model

链式操作,右联表

func (*Model) Save

func (md *Model) Save() (sql.Result, error)

链式操作, CURD - Save/BatchSave

func (*Model) Select

func (md *Model) Select() (Result, error)

链式操作,select

func (*Model) Struct

func (md *Model) Struct(obj interface{}) error

链式操作,查询单条记录,并自动转换为struct对象

func (*Model) Update

func (md *Model) Update() (sql.Result, error)

链式操作, CURD - Update

func (*Model) Value

func (md *Model) Value() (Value, error)

链式操作,查询字段值

func (*Model) Where

func (md *Model) Where(where interface{}, args ...interface{}) *Model

链式操作,condition,支持string & gdb.Map

type Record

type Record map[string]Value

返回数据表记录Map

func (Record) ToMap

func (r Record) ToMap() Map

将Record转换为Map,其中最主要的区别是里面的键值被强制转换为string类型,方便json处理

func (Record) ToStruct

func (r Record) ToStruct(obj interface{}) error

将Map变量映射到指定的struct对象中,注意参数应当是一个对象的指针

type Result

type Result []Record

返回数据表记录List

func (Result) ToIntMap

func (r Result) ToIntMap(key string) map[int]Map

将结果列表按照指定的字段值做map[int]Map

func (Result) ToIntRecord

func (r Result) ToIntRecord(key string) map[int]Record

将结果列表按照指定的字段值做map[int]Record

func (Result) ToList

func (r Result) ToList() List

将结果集转换为List类型返回,便于json处理

func (Result) ToStringMap

func (r Result) ToStringMap(key string) map[string]Map

将结果列表按照指定的字段值做map[string]Map

func (Result) ToStringRecord

func (r Result) ToStringRecord(key string) map[string]Record

将结果列表按照指定的字段值做map[string]Record

func (Result) ToUintMap

func (r Result) ToUintMap(key string) map[uint]Map

将结果列表按照指定的字段值做map[uint]Map

func (Result) ToUintRecord

func (r Result) ToUintRecord(key string) map[uint]Record

将结果列表按照指定的字段值做map[uint]Record

type Tx

type Tx struct {
	// contains filtered or unexported fields
}

数据库事务对象

func (*Tx) BatchInsert

func (tx *Tx) BatchInsert(table string, list List, batch int) (sql.Result, error)

CURD操作:批量数据指定批次量写入

func (*Tx) BatchReplace

func (tx *Tx) BatchReplace(table string, list List, batch int) (sql.Result, error)

CURD操作:批量数据指定批次量写入, 如果数据存在(主键或者唯一索引),那么删除后重新写入一条

func (*Tx) BatchSave

func (tx *Tx) BatchSave(table string, list List, batch int) (sql.Result, error)

CURD操作:批量数据指定批次量写入, 如果数据存在(主键或者唯一索引),那么更新,否则写入一条新数据

func (*Tx) Commit

func (tx *Tx) Commit() error

事务操作,提交

func (*Tx) Delete

func (tx *Tx) Delete(table string, condition interface{}, args ...interface{}) (sql.Result, error)

CURD操作:删除数据

func (*Tx) Exec

func (tx *Tx) Exec(query string, args ...interface{}) (sql.Result, error)

(事务)执行一条sql,并返回执行情况,主要用于非查询操作

func (*Tx) From

func (tx *Tx) From(tables string) *Model

(事务)链式操作,数据表字段,可支持多个表,以半角逗号连接

func (*Tx) GetAll

func (tx *Tx) GetAll(query string, args ...interface{}) (Result, error)

数据库查询,获取查询结果集,以列表结构返回

func (*Tx) GetCount

func (tx *Tx) GetCount(query string, args ...interface{}) (int, error)

数据库查询,获取查询数量

func (*Tx) GetOne

func (tx *Tx) GetOne(query string, args ...interface{}) (Record, error)

数据库查询,获取查询结果记录,以关联数组结构返回

func (*Tx) GetStruct

func (tx *Tx) GetStruct(obj interface{}, query string, args ...interface{}) error

数据库查询,获取查询结果记录,自动映射数据到给定的struct对象中

func (*Tx) GetValue

func (tx *Tx) GetValue(query string, args ...interface{}) (Value, error)

数据库查询,获取查询字段值

func (*Tx) Insert

func (tx *Tx) Insert(table string, data Map) (sql.Result, error)

CURD操作:单条数据写入, 仅仅执行写入操作,如果存在冲突的主键或者唯一索引,那么报错返回

func (*Tx) Prepare

func (tx *Tx) Prepare(query string) (*sql.Stmt, error)

sql预处理,执行完成后调用返回值sql.Stmt.Exec完成sql操作 记得调用sql.Stmt.Close关闭操作对象

func (*Tx) Query

func (tx *Tx) Query(query string, args ...interface{}) (*sql.Rows, error)

(事务)数据库sql查询操作,主要执行查询

func (*Tx) Replace

func (tx *Tx) Replace(table string, data Map) (sql.Result, error)

CURD操作:单条数据写入, 如果数据存在(主键或者唯一索引),那么删除后重新写入一条

func (*Tx) Rollback

func (tx *Tx) Rollback() error

事务操作,回滚

func (*Tx) Save

func (tx *Tx) Save(table string, data Map) (sql.Result, error)

CURD操作:单条数据写入, 如果数据存在(主键或者唯一索引),那么更新,否则写入一条新数据

func (*Tx) Select

func (tx *Tx) Select(tables, fields string, condition interface{}, groupBy, orderBy string, first, limit int, args ...interface{}) (Result, error)

数据表查询,其中tables可以是多个联表查询语句,这种查询方式较复杂,建议使用链式操作

func (*Tx) Table

func (tx *Tx) Table(tables string) *Model

(事务)链式操作,数据表字段,可支持多个表,以半角逗号连接

func (*Tx) Update

func (tx *Tx) Update(table string, data interface{}, condition interface{}, args ...interface{}) (sql.Result, error)

CURD操作:数据更新,统一采用sql预处理 data参数支持字符串或者关联数组类型,内部会自行做判断处理

type Value

type Value []byte

返回数据表记录值

func (Value) Bool

func (v Value) Bool() bool

func (Value) Bytes

func (v Value) Bytes() []byte

func (Value) Float32

func (v Value) Float32() float32

func (Value) Float64

func (v Value) Float64() float64

func (Value) Int

func (v Value) Int() int

func (Value) Int16

func (v Value) Int16() int16

func (Value) Int32

func (v Value) Int32() int32

func (Value) Int64

func (v Value) Int64() int64

func (Value) Int8

func (v Value) Int8() int8

func (Value) String

func (v Value) String() string

func (Value) Time

func (v Value) Time(format ...string) time.Time

func (Value) TimeDuration

func (v Value) TimeDuration() time.Duration

func (Value) Uint

func (v Value) Uint() uint

func (Value) Uint16

func (v Value) Uint16() uint16

func (Value) Uint32

func (v Value) Uint32() uint32

func (Value) Uint64

func (v Value) Uint64() uint64

func (Value) Uint8

func (v Value) Uint8() uint8

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL