db

package
v1.0.1 Latest Latest
Warning

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

Go to latest
Published: Jul 17, 2019 License: MIT, MIT Imports: 3 Imported by: 4

README

db 数据库模块

便于序列化为配置的SQL数据库结构

配置文件

#TOML版本,其他版本可以根据对应格式配置
#数据库驱动名
Driver="mysql"
#数据库类型名。一般用于odbc等可以对应多套数据库的驱动。默认和Driver一致
Type="mysql"
#数据库链接字符串,具体值取决于驱动
DataSource=""
#数据库表前缀
Prefix string
#最大连接数量
MaxOpenConns=60
#最大空闲链接数量
MaxIdleConns=30
#按秒计算的连接最长生命周期。默认值为30秒
ConnMaxLifetimeInSecond=60

使用方式

数据库对象
//创建数据库对象
db:=New()
config:=NewConfig()
err:=toml.Unmarshal(data,config)
err=db.Init(config)

//通过数据库表对象操作数据库
sqlresult,err=table.Exec(query, arg1,arg2) 
sqlrows,err=table.Query(query, arg1,arg2) 
sqlrow,err=table.QueryRow(query, arg1,arg2)

//其他维护操作
//获取db
database:=db.DB()
//设置db
db.SetDB(database)
//获取驱动类型
drivertype:=db.Driver()
//设置驱动类型
db.SetDriver("sqlite3")
//获取表名前缀
prefix:=db.Prefix()
//设置表名前缀
db.SetPrefix("prefix")
//根据表前缀生成表名
tablebname:=db.BuildTableName("table)
数据库表对象
//创建数据库表对象
table:=db.Table("tablename")

//通过数据库对象操作数据库
sqlresult,err=db.Exec(query, arg1,arg2) 
sqlrows,err=db.Query(query, arg1,arg2) 
sqlrow,err=db.QueryRow(query, arg1,arg2)

//其他维护操作
//数据库表对象可以使用数据库对象的大部分操作

//设置和获取不带前缀的表名
name:=table.Name()
table.SetName(name)

//获取带前缀的表名
tablename:=table.TableName()

//设置和获取表别名
alias:=table.Alias()
table.SetAlias(alias)

//根据别名生成表的字段名
field:=table.BuildFieldName("field")
数据库事务对象
//创建数据库事务对象。使用后请自行提交或者回退。
txdb:=NewTxDb(db)

//通过事务对象操作数据库
defer txdb.RollBack()
sqlresult,err=table.Exec(query, arg1,arg2) 
sqlrows,err=table.Query(query, arg1,arg2) 
sqlrow,err=table.QueryRow(query, arg1,arg2)
err=txdb.Commit()

Documentation

Index

Constants

View Source
const DefaultConnMaxLifetimeInSecond = int64(30)

DefaultConnMaxLifetimeInSecond default conn max lifetime

Variables

View Source
var ErrSetDriverFromTable = errors.New("herb:sql/db you can't execute set driver method in table interface")

ErrSetDriverFromTable error raised when execute SetDriver method of table .

Functions

This section is empty.

Types

type Config

type Config struct {
	//Driver sql driver.
	Driver string
	//Type sql database type.
	Type string
	//Conn sql conn string.
	DataSource string
	//Prefix sql table prefix.
	Prefix string
	//MaxIdleConns max idle conns.
	MaxIdleConns int
	//ConnMaxLifetimeInSecond conn max Lifetime in second.
	ConnMaxLifetimeInSecond int64
	//MaxOpenConns max open conns.
	MaxOpenConns int
}

Config database config

func NewConfig

func NewConfig() *Config

NewConfig create new config

func (*Config) ApplyTo

func (c *Config) ApplyTo(d *PlainDB) error

ApplyTo init plain database with config

type Database

type Database interface {
	//SetDB set sqlDB to database interface
	SetDB(db *sql.DB)
	//DB get sql DB of database.
	DB() *sql.DB
	//Driver return database drvier name.
	Driver() string
	//SetDriver set driver name.
	SetDriver(string)
	//BuildTableName return table name with giver table.
	BuildTableName(table string) string
	//Exec exec query with args.
	Exec(query string, args ...interface{}) (sql.Result, error)
	//Query exec query with args .
	//Return rows.
	Query(query string, args ...interface{}) (*sql.Rows, error)
	//QueryRow exec query with args and rows.
	//Return row.
	QueryRow(query string, args ...interface{}) *sql.Row
}

Database database interface

type PlainDB

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

PlainDB plain database struct.

func New

func New() *PlainDB

New create new plain database.

func (*PlainDB) BuildTableName

func (d *PlainDB) BuildTableName(tableName string) string

BuildTableName return table name with giver table.

func (*PlainDB) DB

func (d *PlainDB) DB() *sql.DB

DB return sql db.

func (*PlainDB) Driver

func (d *PlainDB) Driver() string

Driver return driver name.

func (*PlainDB) Exec

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

Exec exec query with args.

func (*PlainDB) Init

func (d *PlainDB) Init(o PlainDBOption) error

Init init plain database with given option.

func (*PlainDB) Prefix

func (d *PlainDB) Prefix() string

Prefix return table prefix.

func (*PlainDB) Query

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

Query exec query with args . Return rows.

func (*PlainDB) QueryRow

func (d *PlainDB) QueryRow(query string, args ...interface{}) *sql.Row

QueryRow exec query with args and rows. Return row.

func (*PlainDB) SetDB

func (d *PlainDB) SetDB(db *sql.DB)

SetDB set sql db to plain datatbase.

func (*PlainDB) SetDriver

func (d *PlainDB) SetDriver(driver string)

SetDriver set driver name.

func (*PlainDB) SetPrefix

func (d *PlainDB) SetPrefix(prefix string)

SetPrefix set table prefix.

func (*PlainDB) Table

func (d *PlainDB) Table(tableName string) *PlainTable

Table create plain table with given table name.

type PlainDBOption

type PlainDBOption interface {
	//ApplyTo init plain database.
	ApplyTo(*PlainDB) error
}

PlainDBOption plain database init option interface.

type PlainTable

type PlainTable struct {
	Database
	// contains filtered or unexported fields
}

PlainTable plain table struct

func NewTable

func NewTable(db Database, tableName string) *PlainTable

NewTable create plain table with given database and table name.

func (*PlainTable) Alias

func (t *PlainTable) Alias() string

Alias return table alias.

func (*PlainTable) BuildFieldName

func (t *PlainTable) BuildFieldName(name string) string

BuildFieldName build field name with alias.

func (*PlainTable) Name

func (t *PlainTable) Name() string

Name return plain table name.

func (*PlainTable) SetAlias

func (t *PlainTable) SetAlias(alias string)

SetAlias set table alias.

func (*PlainTable) SetDriver

func (t *PlainTable) SetDriver(driver string)

SetDriver painc if execute SetDriver method of table.

func (*PlainTable) SetName

func (t *PlainTable) SetName(table string)

SetName set plain table name.

func (*PlainTable) TableName

func (t *PlainTable) TableName() string

TableName return table name build with database.

type Table

type Table interface {
	Database
	//BuildFieldName return field name with given field.
	BuildFieldName(field string) string
	//SetAlias set table alias
	SetAlias(string)
	//Alias return table alias
	Alias() string
	//TableName return table name
	TableName() string
}

Table table interface

type TxDB

type TxDB struct {
	Database
	Tx *sql.Tx
}

TxDB database wtih transaction.

func NewTxDB

func NewTxDB(database Database) (*TxDB, error)

NewTxDB create new database wtih transaction by given database.

func (*TxDB) Commit

func (d *TxDB) Commit() error

Commit commits the transaction.

func (*TxDB) Exec

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

Exec exec query with args.

func (*TxDB) Query

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

Query exec query with args . Return rows.

func (*TxDB) QueryRow

func (d *TxDB) QueryRow(query string, args ...interface{}) *sql.Row

QueryRow exec query with args and rows. Return row.

func (*TxDB) Rollback

func (d *TxDB) Rollback() error

Rollback aborts the transaction.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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