Documentation
¶
Overview ¶
Provides database connections in factory mode to optimize database connections
Example:
mdb := db.GetCache("main")
// count sql cbd := NewSqlBuilder(mdb.DriverName()) cbd.Select("COUNT(*)") cbd.Add("FROM tmp") cbd.Add("WHERE") cbd.AddTab("create_at BETWEEN ? AND ?", time.Now().AddDate(-1,0,0), time.Now())
// copy condition qbd := cbd.Copy() qbd.Select("id", "created_at", "name") qbd.Add("OFFSET ?", 0) qbd.Add("LIMIT ?", 20)
pSql := NewPageSql(cbd, qbd) count, err := pSql.QueryCount(db) ... Or titles, result, err := pSql.QueryPageArray(db) ... Or titles, result, err := pSql.QueryPageMap(db) ...
Index ¶
- Constants
- func Close(closer io.Closer)
- func CloseCache()
- func Commit(tx *sql.Tx, fn func() error) error
- func InsertStruct(drvName string, exec Execer, obj interface{}, tbName string) (sql.Result, error)
- func InsertStructContext(drvName string, exec Execer, ctx context.Context, obj interface{}, ...) (sql.Result, error)
- func MakeDBData(l int) []interface{}
- func QueryElem(queryer Queryer, result interface{}, querySql string, args ...interface{}) error
- func QueryElemContext(queryer Queryer, ctx context.Context, result interface{}, querySql string, ...) error
- func QueryElems(queryer Queryer, result interface{}, querySql string, args ...interface{}) error
- func QueryElemsContext(queryer Queryer, ctx context.Context, result interface{}, querySql string, ...) error
- func QueryPageArr(queryer Queryer, querySql string, args ...interface{}) (titles []string, result [][]interface{}, err error)
- func QueryPageArrContext(queryer Queryer, ctx context.Context, querySql string, args ...interface{}) (titles []string, result [][]interface{}, err error)
- func QueryPageMap(queryer Queryer, querySql string, args ...interface{}) (titles []string, result []map[string]interface{}, err error)
- func QueryPageMapContext(queryer Queryer, ctx context.Context, querySql string, args ...interface{}) (titles []string, result []map[string]interface{}, err error)
- func QueryStruct(queryer Queryer, obj interface{}, querySql string, args ...interface{}) error
- func QueryStructContext(queryer Queryer, ctx context.Context, obj interface{}, querySql string, ...) error
- func QueryStructs(queryer Queryer, obj interface{}, querySql string, args ...interface{}) error
- func QueryStructsContext(queryer Queryer, ctx context.Context, obj interface{}, querySql string, ...) error
- func RegCache(key string, db *DB)
- func RegCacheWithIni(iniPath string)
- func Rollback(tx *sql.Tx)
- func ScanStructs(rows *sql.Rows, obj interface{}) error
- func StmtIn(paramStartIdx, paramsLen int, drvName ...string) string
- type DB
- func (db *DB) Close() error
- func (db *DB) Commit(tx *sql.Tx, fn func() error) error
- func (db *DB) DriverName() string
- func (db *DB) InsertStruct(structPtr interface{}, tbName string) (sql.Result, error)
- func (db *DB) InsertStructContext(ctx context.Context, structPtr interface{}, tbName string) (sql.Result, error)
- func (db *DB) IsClose() bool
- func (db *DB) QueryElem(result interface{}, querySql string, args ...interface{}) error
- func (db *DB) QueryElemContext(ctx context.Context, result interface{}, querySql string, args ...interface{}) error
- func (db *DB) QueryElems(result interface{}, querySql string, args ...interface{}) error
- func (db *DB) QueryElemsContext(ctx context.Context, result interface{}, querySql string, args ...interface{}) error
- func (db *DB) QueryPageArr(querySql string, args ...interface{}) (titles []string, result [][]interface{}, err error)
- func (db *DB) QueryPageArrContext(ctx context.Context, querySql string, args ...interface{}) (titles []string, result [][]interface{}, err error)
- func (db *DB) QueryPageMap(querySql string, args ...interface{}) (titles []string, result []map[string]interface{}, err error)
- func (db *DB) QueryPageMapContext(ctx context.Context, querySql string, args ...interface{}) (titles []string, result []map[string]interface{}, err error)
- func (db *DB) QueryStruct(structPtr interface{}, querySql string, args ...interface{}) error
- func (db *DB) QueryStructContext(ctx context.Context, structPtr interface{}, querySql string, ...) error
- func (db *DB) QueryStructs(structPtr interface{}, querySql string, args ...interface{}) error
- func (db *DB) QueryStructsContext(ctx context.Context, structPtr interface{}, querySql string, ...) error
- func (db *DB) ScanStructs(rows *sql.Rows, structsPtr interface{}) error
- func (db *DB) StmtIn(paramStartIdx, paramsLen int) string
- type DBData
- type Execer
- type PageSql
- type Queryer
- type QuickSql
- type SqlBuilder
- func (b *SqlBuilder) Add(key string, args ...interface{}) *SqlBuilder
- func (b *SqlBuilder) AddIf(ok bool, key string, args ...interface{}) *SqlBuilder
- func (b *SqlBuilder) AddIn(in []interface{}) string
- func (b *SqlBuilder) AddTab(key string, args ...interface{}) *SqlBuilder
- func (b *SqlBuilder) Args() []interface{}
- func (b *SqlBuilder) Copy() *SqlBuilder
- func (b *SqlBuilder) Select(column ...string) *SqlBuilder
- func (b *SqlBuilder) SelectStruct(obj interface{}) *SqlBuilder
- func (b *SqlBuilder) SetIndent(indent string) *SqlBuilder
- func (b *SqlBuilder) Sql() []interface{}
- func (b *SqlBuilder) String() string
Constants ¶
const ( DRV_NAME_MYSQL = "mysql" DRV_NAME_ORACLE = "oracle" // or "oci8" DRV_NAME_POSTGRES = "postgres" DRV_NAME_SQLITE3 = "sqlite3" DRV_NAME_SQLSERVER = "sqlserver" // or "mssql" )
Variables ¶
This section is empty.
Functions ¶
func InsertStruct ¶
func InsertStructContext ¶
func MakeDBData ¶ added in v0.0.3
func MakeDBData(l int) []interface{}
func QueryElemContext ¶
func QueryElems ¶
func QueryElemsContext ¶
func QueryPageArr ¶
func QueryPageArrContext ¶
func QueryPageMap ¶
func QueryPageMapContext ¶
func QueryStruct ¶
func QueryStructContext ¶
func QueryStructs ¶
func QueryStructsContext ¶
func RegCacheWithIni ¶
func RegCacheWithIni(iniPath string)
func ScanStructs ¶
Types ¶
type DB ¶
qsql.DB Extendd sql.DB and implement qsql.QuickQuery interface
func (*DB) Commit ¶
A lazy function to commit the *sql.Tx if will auto commit when the function is nil error, or do a rollback and return the function error.
func (*DB) DriverName ¶
func (*DB) InsertStruct ¶
Reflect one db data to the struct. the struct tag format like `db:"field_title"`, reference to: http://github.com/jmoiron/sqlx
func (*DB) InsertStructContext ¶
func (*DB) QueryElemContext ¶
func (*DB) QueryElems ¶
Query one field to a sql.Scanner array.
func (*DB) QueryElemsContext ¶
func (*DB) QueryPageArr ¶
func (db *DB) QueryPageArr(querySql string, args ...interface{}) (titles []string, result [][]interface{}, err error)
Reflect the query result to a string array.
func (*DB) QueryPageArrContext ¶
func (*DB) QueryPageMap ¶
func (db *DB) QueryPageMap(querySql string, args ...interface{}) (titles []string, result []map[string]interface{}, err error)
Reflect the query result to a string map.
func (*DB) QueryPageMapContext ¶
func (*DB) QueryStruct ¶
Reflect the sql.Query result to a struct.
func (*DB) QueryStructContext ¶
func (*DB) QueryStructs ¶
Reflect the sql.Query result to a struct array. Return empty array if data not found.
func (*DB) QueryStructsContext ¶
func (*DB) ScanStructs ¶
Reflect the sql.Rows to []struct array. Return empty array if data not found. Refere to: github.com/jmoiron/sqlx DO NOT forget close the rows
type PageSql ¶
type PageSql struct {
// contains filtered or unexported fields
}
func NewPageSql ¶
func NewPageSql(countBD, queryBD *SqlBuilder) *PageSql
func (*PageSql) QueryPageArr ¶
type Queryer ¶
type Queryer interface {
Query(query string, args ...interface{}) (*sql.Rows, error)
QueryRow(query string, args ...interface{}) *sql.Row
QueryContext(ctx context.Context, query string, args ...interface{}) (*sql.Rows, error)
QueryRowContext(ctx context.Context, query string, args ...interface{}) *sql.Row
}
type QuickSql ¶ added in v0.0.3
type QuickSql interface {
DriverName() string
// Insert a struct data into tbName
//
// Reflect one db data to the struct.
// the struct tag format like `db:"field_title"`, reference to: http://github.com/jmoiron/sqlx
//
InsertStruct(structPtr interface{}, tbName string) (sql.Result, error)
InsertStructContext(ctx context.Context, structPtr interface{}, tbName string) (sql.Result, error)
// Scan the rows result to []struct
// Reflect the sql.Rows to a struct array.
// Return empty array if data not found.
// Refere to: github.com/jmoiron/sqlx
// DOT NOT forget close the rows after called.
ScanStructs(rows *sql.Rows, structsPtr interface{}) error
// Query db data to a struct
QueryStruct(structPrt interface{}, querySql string, args ...interface{}) error
QueryStructContext(ctx context.Context, structPrt interface{}, querySql string, args ...interface{}) error
// Query db data to []struct
QueryStructs(structsPrt interface{}, querySql string, args ...interface{}) error
QueryStructsContext(ctx context.Context, structsPrt interface{}, querySql string, args ...interface{}) error
// Query a element data like int, string.
// Same as row.Scan(&e)
QueryElem(ePtr interface{}, querySql string, args ...interface{}) error
QueryElemContext(ctx context.Context, ePtr interface{}, querySql string, args ...interface{}) error
// Query elements data like []int, []string in result.
QueryElems(ePtr interface{}, querySql string, args ...interface{}) error
QueryElemsContext(ctx context.Context, ePtr interface{}, querySql string, args ...interface{}) error
// Query a page data to array.
// the result data is [][]*string but no nil *string pointer instance.
QueryPageArr(querySql string, args ...interface{}) (titles []string, result [][]interface{}, err error)
QueryPageArrContext(ctx context.Context, querySql string, args ...interface{}) (titles []string, result [][]interface{}, err error)
// Query a page data to map, NOT RECOMMENED to use when there is a large page data.
// the result data is []map[string]*string but no nil *string pointer instance.
QueryPageMap(querySql string, args ...interface{}) (titles []string, result []map[string]interface{}, err error)
QueryPageMapContext(ctx context.Context, querySql string, args ...interface{}) (titles []string, result []map[string]interface{}, err error)
// Extend stmt for the where in
// paramStartIdx default is 0, but you need count it when the driver is mssq, pgsql etc. .
//
// Example for the first input:
// fmt.Sprintf("select * from table_name where in (%s)", qsql.StmtWhereIn(0,len(args))
// Or
// fmt.Sprintf("select * from table_name where in (%s)", qsql.StmtWhereIn(0,len(args), qsql.DRV_NAME_MYSQL)
//
// Example for the second input:
// fmt.Sprintf("select * from table_name where id=? in (%s)", qsql.StmtWhereIn(1,len(args))
//
// Return "?,?,?,?..." for default, or "@p1,@p2,@p3..." for mssql, or ":1,:2,:3..." for pgsql when paramStartIdx is 0.
StmtIn(paramStartIdx, paramLen int) string
// auto commit when the func is return nil, or auto rollback when the func is error
Commit(tx *sql.Tx, fn func() error) error
}
type SqlBuilder ¶ added in v0.0.3
type SqlBuilder struct {
// contains filtered or unexported fields
}
func NewSqlBuilder ¶ added in v0.0.3
func NewSqlBuilder(drvName ...string) *SqlBuilder
func (*SqlBuilder) Add ¶ added in v0.0.3
func (b *SqlBuilder) Add(key string, args ...interface{}) *SqlBuilder
func (*SqlBuilder) AddIf ¶ added in v0.0.3
func (b *SqlBuilder) AddIf(ok bool, key string, args ...interface{}) *SqlBuilder
func (*SqlBuilder) AddIn ¶ added in v0.0.3
func (b *SqlBuilder) AddIn(in []interface{}) string
func (*SqlBuilder) AddTab ¶ added in v0.0.3
func (b *SqlBuilder) AddTab(key string, args ...interface{}) *SqlBuilder
recursive Add, only format the code when coding
func (*SqlBuilder) Args ¶ added in v0.0.3
func (b *SqlBuilder) Args() []interface{}
func (*SqlBuilder) Copy ¶ added in v0.0.3
func (b *SqlBuilder) Copy() *SqlBuilder
func (*SqlBuilder) Select ¶ added in v0.0.3
func (b *SqlBuilder) Select(column ...string) *SqlBuilder
func (*SqlBuilder) SelectStruct ¶ added in v0.0.3
func (b *SqlBuilder) SelectStruct(obj interface{}) *SqlBuilder
func (*SqlBuilder) SetIndent ¶ added in v0.0.3
func (b *SqlBuilder) SetIndent(indent string) *SqlBuilder
func (*SqlBuilder) Sql ¶ added in v0.0.3
func (b *SqlBuilder) Sql() []interface{}
func (*SqlBuilder) String ¶ added in v0.0.3
func (b *SqlBuilder) String() string