Documentation ¶
Overview ¶
Package xorm is a simple and powerful ORM for Go.
Installation ¶
Make sure you have installed Go 1.1+ and then:
go get github.com/go-xorm/xorm
Create Engine ¶
Firstly, we should new an engine for a database
engine, err := xorm.NewEngine(driverName, dataSourceName)
Method NewEngine's parameters is the same as sql.Open. It depends drivers' implementation. Generally, one engine for an application is enough. You can set it as package variable.
Raw Methods ¶
Xorm also support raw sql execution:
1. query a SQL string, the returned results is []map[string][]byte
results, err := engine.Query("select * from user")
2. execute a SQL string, the returned results
affected, err := engine.Exec("update user set .... where ...")
ORM Methods ¶
There are 7 major ORM methods and many helpful methods to use to operate database.
1. Insert one or multipe records to database
affected, err := engine.Insert(&struct) // INSERT INTO struct () values () affected, err := engine.Insert(&struct1, &struct2) // INSERT INTO struct1 () values () // INSERT INTO struct2 () values () affected, err := engine.Insert(&sliceOfStruct) // INSERT INTO struct () values (),(),() affected, err := engine.Insert(&struct1, &sliceOfStruct2) // INSERT INTO struct1 () values () // INSERT INTO struct2 () values (),(),()
2. Query one record from database
has, err := engine.Get(&user) // SELECT * FROM user LIMIT 1
3. Query multiple records from database
sliceOfStructs := new(Struct) err := engine.Find(sliceOfStructs) // SELECT * FROM user
4. Query multiple records and record by record handle, there two methods, one is Iterate, another is Rows
err := engine.Iterate(...) // SELECT * FROM user rows, err := engine.Rows(...) // SELECT * FROM user defer rows.Close() bean := new(Struct) for rows.Next() { err = rows.Scan(bean) }
5. Update one or more records
affected, err := engine.Id(...).Update(&user) // UPDATE user SET ...
6. Delete one or more records, Delete MUST has conditon
affected, err := engine.Where(...).Delete(&user) // DELETE FROM user Where ...
7. Count records
counts, err := engine.Count(&user) // SELECT count(*) AS total FROM user
Conditions ¶
The above 7 methods could use with condition methods chainable. Attention: the above 7 methods should be the last chainable method.
1. Id, In
engine.Id(1).Get(&user) // for single primary key // SELECT * FROM user WHERE id = 1 engine.Id(core.PK{1, 2}).Get(&user) // for composite primary keys // SELECT * FROM user WHERE id1 = 1 AND id2 = 2 engine.In("id", 1, 2, 3).Find(&users) // SELECT * FROM user WHERE id IN (1, 2, 3) engine.In("id", []int{1, 2, 3}) // SELECT * FROM user WHERE id IN (1, 2, 3)
2. Where, And, Or
engine.Where().And().Or().Find() // SELECT * FROM user WHERE (.. AND ..) OR ...
3. OrderBy, Asc, Desc
engine.Asc().Desc().Find() // SELECT * FROM user ORDER BY .. ASC, .. DESC engine.OrderBy().Find() // SELECT * FROM user ORDER BY ..
4. Limit, Top
engine.Limit().Find() // SELECT * FROM user LIMIT .. OFFSET .. engine.Top(5).Find() // SELECT TOP 5 * FROM user // for mssql // SELECT * FROM user LIMIT .. OFFSET 0 //for other databases
5. Sql, let you custom SQL
engine.Sql("select * from user").Find()
6. Cols, Omit, Distinct
engine.Cols("col1, col2").Find() // SELECT col1, col2 FROM user engine.Cols("col1", "col2").Where().Update(user) // UPDATE user set col1 = ?, col2 = ? Where ... engine.Omit("col1").Find() // SELECT col2, col3 FROM user engine.Omit("col1").Insert() // INSERT INTO table (non-col1) VALUES () engine.Distinct("col1").Find() // SELECT DISTINCT col1 FROM user
7. Join, GroupBy, Having
engine.GroupBy("name").Having("name='xlw'").Find() //SELECT * FROM user GROUP BY name HAVING name='xlw' engine.Join("LEFT", "userdetail", "user.id=userdetail.id").Find() //SELECT * FROM user LEFT JOIN userdetail ON user.id=userdetail.id
More usage, please visit http://xorm.io/docs
LRUCacher implements Cacher according to LRU algorithm ¶
MemoryStore implements CacheStore provide local machine
Index ¶
- Constants
- Variables
- func Atot(s string, tp reflect.Type) (interface{}, error)
- type AfterDeleteProcessor
- type AfterInsertProcessor
- type AfterUpdateProcessor
- type BeforeDeleteProcessor
- type BeforeInsertProcessor
- type BeforeSetProcessor
- type BeforeUpdateProcessor
- type Cell
- type Engine
- func (engine *Engine) After(closures func(interface{})) *Session
- func (engine *Engine) Alias(alias string) *Session
- func (engine *Engine) AllCols() *Session
- func (engine *Engine) Asc(colNames ...string) *Session
- func (engine *Engine) AutoIncrStr() string
- func (engine *Engine) Before(closures func(interface{})) *Session
- func (engine *Engine) Cascade(trueOrFalse ...bool) *Session
- func (engine *Engine) Charset(charset string) *Session
- func (engine *Engine) ClearCache(beans ...interface{}) error
- func (engine *Engine) ClearCacheBean(bean interface{}, id string) error
- func (engine *Engine) Clone() (*Engine, error)
- func (engine *Engine) Close() error
- func (engine *Engine) Cols(columns ...string) *Session
- func (engine *Engine) Count(bean interface{}) (int64, error)
- func (engine *Engine) CreateIndexes(bean interface{}) error
- func (engine *Engine) CreateTables(beans ...interface{}) error
- func (engine *Engine) CreateUniques(bean interface{}) error
- func (engine *Engine) DB() *core.DB
- func (engine *Engine) DBMetas() ([]*core.Table, error)
- func (engine *Engine) DataSourceName() string
- func (engine *Engine) Decr(column string, arg ...interface{}) *Session
- func (engine *Engine) Delete(bean interface{}) (int64, error)
- func (engine *Engine) Desc(colNames ...string) *Session
- func (engine *Engine) Dialect() core.Dialect
- func (engine *Engine) Distinct(columns ...string) *Session
- func (engine *Engine) DriverName() string
- func (engine *Engine) DropTables(beans ...interface{}) error
- func (engine *Engine) DumpAll(w io.Writer) error
- func (engine *Engine) DumpAllToFile(fp string) error
- func (engine *Engine) Exec(sql string, args ...interface{}) (sql.Result, error)
- func (engine *Engine) Find(beans interface{}, condiBeans ...interface{}) error
- func (engine *Engine) FormatTime(sqlTypeName string, t time.Time) (v interface{})
- func (engine *Engine) Get(bean interface{}) (bool, error)
- func (engine *Engine) GobRegister(v interface{}) *Engine
- func (engine *Engine) GroupBy(keys string) *Session
- func (engine *Engine) Having(conditions string) *Session
- func (engine *Engine) Id(id interface{}) *Session
- func (engine *Engine) IdOf(bean interface{}) core.PK
- func (engine *Engine) IdOfV(rv reflect.Value) core.PK
- func (engine *Engine) Import(r io.Reader) ([]sql.Result, error)
- func (engine *Engine) ImportFile(ddlPath string) ([]sql.Result, error)
- func (engine *Engine) In(column string, args ...interface{}) *Session
- func (engine *Engine) Incr(column string, arg ...interface{}) *Session
- func (engine *Engine) Insert(beans ...interface{}) (int64, error)
- func (engine *Engine) InsertOne(bean interface{}) (int64, error)
- func (engine *Engine) IsTableEmpty(bean interface{}) (bool, error)
- func (engine *Engine) IsTableExist(beanOrTableName interface{}) (bool, error)
- func (engine *Engine) Iterate(bean interface{}, fun IterFunc) error
- func (engine *Engine) Join(join_operator string, tablename interface{}, condition string) *Session
- func (engine *Engine) Limit(limit int, start ...int) *Session
- func (engine *Engine) LogDebug(contents ...interface{})
- func (engine *Engine) LogDebugf(format string, contents ...interface{})
- func (engine *Engine) LogError(contents ...interface{})
- func (engine *Engine) LogErrorf(format string, contents ...interface{})
- func (engine *Engine) LogInfo(contents ...interface{})
- func (engine *Engine) LogInfof(format string, contents ...interface{})
- func (engine *Engine) LogSQLExecutionTime(sqlStr string, args interface{}, executionBlock func() (sql.Result, error)) (sql.Result, error)
- func (engine *Engine) LogSQLQueryTime(sqlStr string, args interface{}, ...) (*core.Stmt, *core.Rows, error)
- func (engine *Engine) LogWarn(contents ...interface{})
- func (engine *Engine) LogWarnf(format string, contents ...interface{})
- func (engine *Engine) MapCacher(bean interface{}, cacher core.Cacher)
- func (engine *Engine) MustCols(columns ...string) *Session
- func (engine *Engine) NewDB() (*core.DB, error)
- func (engine *Engine) NewSession() *Session
- func (engine *Engine) NoAutoTime() *Session
- func (engine *Engine) NoCache() *Session
- func (engine *Engine) NoCascade() *Session
- func (engine *Engine) NowTime(sqlTypeName string) interface{}
- func (engine *Engine) NowTime2(sqlTypeName string) (interface{}, time.Time)
- func (engine *Engine) Omit(columns ...string) *Session
- func (engine *Engine) OrderBy(order string) *Session
- func (engine *Engine) Ping() error
- func (engine *Engine) Query(sql string, paramStr ...interface{}) (resultsSlice []map[string][]byte, err error)
- func (engine *Engine) Quote(sql string) string
- func (engine *Engine) QuoteStr() string
- func (engine *Engine) Rows(bean interface{}) (*Rows, error)
- func (engine *Engine) SetColumnMapper(mapper core.IMapper)
- func (engine *Engine) SetDefaultCacher(cacher core.Cacher)
- func (engine *Engine) SetDisableGlobalCache(disable bool)
- func (engine *Engine) SetExpr(column string, expression string) *Session
- func (engine *Engine) SetLogger(logger core.ILogger)
- func (engine *Engine) SetMapper(mapper core.IMapper)
- func (engine *Engine) SetMaxConns(conns int)
- func (engine *Engine) SetMaxIdleConns(conns int)
- func (engine *Engine) SetMaxOpenConns(conns int)
- func (engine *Engine) SetTableMapper(mapper core.IMapper)
- func (engine *Engine) Sql(querystring string, args ...interface{}) *Session
- func (engine *Engine) SqlType(c *core.Column) string
- func (engine *Engine) StoreEngine(storeEngine string) *Session
- func (engine *Engine) SupportInsertMany() bool
- func (engine *Engine) Sync(beans ...interface{}) error
- func (engine *Engine) Sync2(beans ...interface{}) error
- func (engine *Engine) TZTime(t time.Time) time.Time
- func (engine *Engine) Table(tableNameOrBean interface{}) *Session
- func (engine *Engine) TableInfo(bean interface{}) *core.Table
- func (engine *Engine) Unscoped() *Session
- func (engine *Engine) Update(bean interface{}, condiBeans ...interface{}) (int64, error)
- func (engine *Engine) UseBool(columns ...string) *Session
- func (engine *Engine) Where(querystring string, args ...interface{}) *Session
- type IterFunc
- type LRUCacher
- func (m *LRUCacher) ClearBeans(tableName string)
- func (m *LRUCacher) ClearIds(tableName string)
- func (m *LRUCacher) DelBean(tableName string, id string)
- func (m *LRUCacher) DelIds(tableName, sql string)
- func (m *LRUCacher) GC()
- func (m *LRUCacher) GetBean(tableName string, id string) interface{}
- func (m *LRUCacher) GetIds(tableName, sql string) interface{}
- func (m *LRUCacher) PutBean(tableName string, id string, obj interface{})
- func (m *LRUCacher) PutIds(tableName, sql string, ids interface{})
- func (m *LRUCacher) RunGC()
- type MemoryStore
- type Rows
- type Session
- func (session *Session) After(closures func(interface{})) *Session
- func (session *Session) Alias(alias string) *Session
- func (session *Session) AllCols() *Session
- func (session *Session) And(querystring string, args ...interface{}) *Session
- func (session *Session) Asc(colNames ...string) *Session
- func (session *Session) Before(closures func(interface{})) *Session
- func (session *Session) Begin() error
- func (session *Session) Cascade(trueOrFalse ...bool) *Session
- func (session *Session) Charset(charset string) *Session
- func (session *Session) Close()
- func (session *Session) Cols(columns ...string) *Session
- func (session *Session) Commit() error
- func (session *Session) Count(bean interface{}) (int64, error)
- func (session *Session) CreateIndexes(bean interface{}) error
- func (session *Session) CreateTable(bean interface{}) error
- func (session *Session) CreateUniques(bean interface{}) error
- func (session *Session) DB() *core.DB
- func (session *Session) Decr(column string, arg ...interface{}) *Session
- func (session *Session) Delete(bean interface{}) (int64, error)
- func (session *Session) Desc(colNames ...string) *Session
- func (session *Session) Distinct(columns ...string) *Session
- func (session *Session) DropIndexes(bean interface{}) error
- func (session *Session) DropTable(beanOrTableName interface{}) error
- func (session *Session) Exec(sqlStr string, args ...interface{}) (sql.Result, error)
- func (session *Session) Find(rowsSlicePtr interface{}, condiBean ...interface{}) error
- func (session *Session) Get(bean interface{}) (bool, error)
- func (session *Session) GroupBy(keys string) *Session
- func (session *Session) Having(conditions string) *Session
- func (session *Session) Id(id interface{}) *Session
- func (session *Session) In(column string, args ...interface{}) *Session
- func (session *Session) Incr(column string, arg ...interface{}) *Session
- func (session *Session) Init()
- func (session *Session) Insert(beans ...interface{}) (int64, error)
- func (session *Session) InsertMulti(rowsSlicePtr interface{}) (int64, error)
- func (session *Session) InsertOne(bean interface{}) (int64, error)
- func (session *Session) IsTableEmpty(bean interface{}) (bool, error)
- func (session *Session) IsTableExist(beanOrTableName interface{}) (bool, error)
- func (session *Session) Iterate(bean interface{}, fun IterFunc) error
- func (session *Session) Join(join_operator string, tablename interface{}, condition string) *Session
- func (session *Session) Limit(limit int, start ...int) *Session
- func (session *Session) MustCols(columns ...string) *Session
- func (session *Session) NoAutoTime() *Session
- func (session *Session) NoCache() *Session
- func (session *Session) NoCascade() *Session
- func (session *Session) Omit(columns ...string) *Session
- func (session *Session) Or(querystring string, args ...interface{}) *Session
- func (session *Session) OrderBy(order string) *Session
- func (session *Session) Ping() error
- func (session *Session) Query(sqlStr string, paramStr ...interface{}) (resultsSlice []map[string][]byte, err error)
- func (session *Session) Rollback() error
- func (session *Session) Rows(bean interface{}) (*Rows, error)
- func (session *Session) SetExpr(column string, expression string) *Session
- func (session *Session) Sql(querystring string, args ...interface{}) *Session
- func (session *Session) StoreEngine(storeEngine string) *Session
- func (s *Session) Sync2(beans ...interface{}) error
- func (session *Session) Table(tableNameOrBean interface{}) *Session
- func (session *Session) Unscoped() *Session
- func (session *Session) Update(bean interface{}, condiBean ...interface{}) (int64, error)
- func (session *Session) UseBool(columns ...string) *Session
- func (session *Session) Where(querystring string, args ...interface{}) *Session
- type SimpleLogger
- func (s *SimpleLogger) Debug(v ...interface{}) (err error)
- func (s *SimpleLogger) Debugf(format string, v ...interface{}) (err error)
- func (s *SimpleLogger) Err(v ...interface{}) (err error)
- func (s *SimpleLogger) Errf(format string, v ...interface{}) (err error)
- func (s *SimpleLogger) Info(v ...interface{}) (err error)
- func (s *SimpleLogger) Infof(format string, v ...interface{}) (err error)
- func (s *SimpleLogger) Level() core.LogLevel
- func (s *SimpleLogger) SetLevel(l core.LogLevel) (err error)
- func (s *SimpleLogger) Warning(v ...interface{}) (err error)
- func (s *SimpleLogger) Warningf(format string, v ...interface{}) (err error)
- type Statement
- func (statement *Statement) Alias(alias string) *Statement
- func (statement *Statement) AllCols() *Statement
- func (statement *Statement) And(querystring string, args ...interface{}) *Statement
- func (statement *Statement) Asc(colNames ...string) *Statement
- func (statement *Statement) Cols(columns ...string) *Statement
- func (statement *Statement) Decr(column string, arg ...interface{}) *Statement
- func (statement *Statement) Desc(colNames ...string) *Statement
- func (statement *Statement) Distinct(columns ...string) *Statement
- func (statement *Statement) GroupBy(keys string) *Statement
- func (statement *Statement) Having(conditions string) *Statement
- func (statement *Statement) Id(id interface{}) *Statement
- func (statement *Statement) In(column string, args ...interface{}) *Statement
- func (statement *Statement) Incr(column string, arg ...interface{}) *Statement
- func (statement *Statement) Init()
- func (statement *Statement) Join(join_operator string, tablename interface{}, condition string) *Statement
- func (statement *Statement) JoinColumns(cols []*core.Column) string
- func (statement *Statement) Limit(limit int, start ...int) *Statement
- func (statement *Statement) MustCols(columns ...string) *Statement
- func (statement *Statement) Omit(columns ...string)
- func (statement *Statement) Or(querystring string, args ...interface{}) *Statement
- func (statement *Statement) OrderBy(order string) *Statement
- func (statement *Statement) SetExpr(column string, expression string) *Statement
- func (statement *Statement) Sql(querystring string, args ...interface{}) *Statement
- func (statement *Statement) Table(tableNameOrBean interface{}) *Statement
- func (statement *Statement) TableName() string
- func (statement *Statement) Top(limit int) *Statement
- func (statement *Statement) Unscoped() *Statement
- func (statement *Statement) UseBool(columns ...string) *Statement
- func (statement *Statement) Where(querystring string, args ...interface{}) *Statement
- type SyslogLogger
- func (s *SyslogLogger) Debug(v ...interface{}) (err error)
- func (s *SyslogLogger) Debugf(format string, v ...interface{}) (err error)
- func (s *SyslogLogger) Err(v ...interface{}) (err error)
- func (s *SyslogLogger) Errf(format string, v ...interface{}) (err error)
- func (s *SyslogLogger) Info(v ...interface{}) (err error)
- func (s *SyslogLogger) Infof(format string, v ...interface{}) (err error)
- func (s *SyslogLogger) Level() core.LogLevel
- func (s *SyslogLogger) SetLevel(l core.LogLevel) (err error)
- func (s *SyslogLogger) Warning(v ...interface{}) (err error)
- func (s *SyslogLogger) Warningf(format string, v ...interface{}) (err error)
Constants ¶
const ( DEFAULT_LOG_PREFIX = "[xorm]" DEFAULT_LOG_FLAG = log.Ldate | log.Lmicroseconds DEFAULT_LOG_LEVEL = core.LOG_DEBUG )
const (
Version string = "0.4.3.0401"
)
Variables ¶
var ( ErrParamsType error = errors.New("Params type error") ErrTableNotFound error = errors.New("Not found table") ErrUnSupportedType error = errors.New("Unsupported type error") ErrNotExist error = errors.New("Not exist error") ErrCacheFailed error = errors.New("Cache failed") ErrNeedDeletedCond error = errors.New("Delete need at least one condition") ErrNotImplemented error = errors.New("Not implemented.") )
var (
NULL_TIME time.Time
)
Functions ¶
Types ¶
type AfterDeleteProcessor ¶
type AfterDeleteProcessor interface {
AfterDelete()
}
Executed after an object has been deleted
type AfterInsertProcessor ¶
type AfterInsertProcessor interface {
AfterInsert()
}
Executed after an object is persisted to the database
type AfterUpdateProcessor ¶
type AfterUpdateProcessor interface {
AfterUpdate()
}
Executed after an object has been updated
type BeforeDeleteProcessor ¶
type BeforeDeleteProcessor interface {
BeforeDelete()
}
Executed before an object is deleted
type BeforeInsertProcessor ¶
type BeforeInsertProcessor interface {
BeforeInsert()
}
Executed before an object is initially persisted to the database
type BeforeSetProcessor ¶ added in v0.4.1
type BeforeUpdateProcessor ¶
type BeforeUpdateProcessor interface {
BeforeUpdate()
}
Executed before an object is updated
type Engine ¶
type Engine struct { ColumnMapper core.IMapper TableMapper core.IMapper TagIdentifier string Tables map[reflect.Type]*core.Table Cacher core.Cacher ShowSQL bool // !nashtsai! TODO ought to deprecate these but having logger to control its log level ShowInfo bool ShowErr bool ShowDebug bool ShowWarn bool Logger core.ILogger TZLocation *time.Location // contains filtered or unexported fields }
Engine is the major struct of xorm, it means a database manager. Commonly, an application only need one engine
func (*Engine) Asc ¶
Method Asc will generate "ORDER BY column1,column2 Asc" This method can chainable use.
engine.Desc("name").Asc("age").Find(&users) // SELECT * FROM user ORDER BY name DESC, age ASC
func (*Engine) AutoIncrStr ¶
Database's autoincrement statement
func (*Engine) ClearCache ¶
If enabled cache, clear some tables' cache
func (*Engine) ClearCacheBean ¶
If enabled cache, clear the cache bean
func (*Engine) CreateIndexes ¶
create indexes
func (*Engine) CreateTables ¶
CreateTables create tabls according bean
func (*Engine) CreateUniques ¶
create uniques
func (*Engine) DataSourceName ¶
func (*Engine) Decr ¶ added in v0.4.1
Method Decr provides a update string like "column = column - ?"
func (*Engine) Distinct ¶
use for distinct columns. Caution: when you are using cache, distinct will not be cached because cache system need id, but distinct will not provide id
func (*Engine) DriverName ¶
func (*Engine) DropTables ¶
func (*Engine) DumpAllToFile ¶ added in v0.4.1
dump database all table structs and data to a file
func (*Engine) Find ¶
Find retrieve records from table, condiBeans's non-empty fields are conditions. beans could be []Struct, []*Struct, map[int64]Struct map[int64]*Struct
func (*Engine) FormatTime ¶
func (*Engine) GobRegister ¶ added in v0.4.1
func (*Engine) ImportFile ¶ added in v0.4.1
Import SQL DDL file
func (*Engine) Incr ¶ added in v0.4.1
Method Inc provides a update string like "column = column + ?"
func (*Engine) IsTableEmpty ¶
If a table has any reocrd
func (*Engine) IsTableExist ¶
If a table is exist
func (*Engine) Iterate ¶
Iterate record by record handle records from table, bean's non-empty fields are conditions.
func (*Engine) Join ¶
The join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
func (*Engine) LogInfo ¶ added in v0.4.1
func (engine *Engine) LogInfo(contents ...interface{})
logging info
func (*Engine) LogSQLExecutionTime ¶ added in v0.4.1
func (*Engine) LogSQLQueryTime ¶ added in v0.4.1
func (*Engine) NoAutoTime ¶
Default if your struct has "created" or "updated" filed tag, the fields will automatically be filled with current time when Insert or Update invoked. Call NoAutoTime if you dont' want to fill automatically.
func (*Engine) NoCache ¶
If you has set default cacher, and you want temporilly stop use cache, you can use NoCache()
func (*Engine) Query ¶
func (engine *Engine) Query(sql string, paramStr ...interface{}) (resultsSlice []map[string][]byte, err error)
Exec a raw sql and return records as []map[string][]byte
func (*Engine) QuoteStr ¶
Engine's database use which charactor as quote. mysql, sqlite use ` and postgres use "
func (*Engine) Rows ¶
Return sql.Rows compatible Rows obj, as a forward Iterator object for iterating record by record, bean's non-empty fields are conditions.
func (*Engine) SetColumnMapper ¶
func (*Engine) SetDefaultCacher ¶
SetDefaltCacher set the default cacher. Xorm's default not enable cacher.
func (*Engine) SetDisableGlobalCache ¶ added in v0.4.1
func (*Engine) SetExpr ¶ added in v0.4.3
Method SetExpr provides a update string like "column = {expression}"
func (*Engine) SetMaxOpenConns ¶ added in v0.4.1
SetMaxOpenConns is only available for go 1.2+
func (*Engine) SetTableMapper ¶
func (*Engine) Sql ¶
Sql method let's you manualy write raw sql and operate For example:
engine.Sql("select * from user").Find(&users)
This code will execute "select * from user" and set the records to users
func (*Engine) StoreEngine ¶
set store engine when create table, only support mysql now
func (*Engine) SupportInsertMany ¶
If engine's database support batch insert records like "insert into user values (name, age), (name, age)". When the return is ture, then engine.Insert(&users) will generate batch sql and exeute.
func (*Engine) Sync ¶
Sync the new struct changes to database, this method will automatically add table, column, index, unique. but will not delete or change anything. If you change some field, you should change the database manually.
func (*Engine) Update ¶
Update records, bean's non-empty fields are updated contents, condiBean' non-empty filds are conditions CAUTION:
1.bool will defaultly be updated content nor conditions You should call UseBool if you have bool to use. 2.float32 & float64 may be not inexact as conditions
type LRUCacher ¶
type LRUCacher struct { // maxSize int MaxElementSize int Expired time.Duration GcInterval time.Duration // contains filtered or unexported fields }
func NewLRUCacher ¶
func NewLRUCacher(store core.CacheStore, maxElementSize int) *LRUCacher
func NewLRUCacher2 ¶
func (*LRUCacher) ClearBeans ¶
func (*LRUCacher) GC ¶
func (m *LRUCacher) GC()
GC check ids lit and sql list to remove all element expired
type MemoryStore ¶
type MemoryStore struct {
// contains filtered or unexported fields
}
memory store
func NewMemoryStore ¶
func NewMemoryStore() *MemoryStore
func (*MemoryStore) Del ¶
func (s *MemoryStore) Del(key string) error
func (*MemoryStore) Get ¶
func (s *MemoryStore) Get(key string) (interface{}, error)
func (*MemoryStore) Put ¶
func (s *MemoryStore) Put(key string, value interface{}) error
type Rows ¶
type Rows struct { NoTypeCheck bool // contains filtered or unexported fields }
func (*Rows) Err ¶
Err returns the error, if any, that was encountered during iteration. Err may be called after an explicit or implicit Close.
type Session ¶
type Session struct { Engine *Engine Tx *core.Tx Statement Statement IsAutoCommit bool IsCommitedOrRollbacked bool TransType string IsAutoClose bool // Automatically reset the statement after operations that execute a SQL // query such as Count(), Find(), Get(), ... AutoResetStatement bool // contains filtered or unexported fields }
Struct Session keep a pointer to sql.DB and provides all execution of all kind of database operations.
func (*Session) Asc ¶
Method Asc provide asc order by query condition, the input parameters are columns.
func (*Session) Close ¶
func (session *Session) Close()
Method Close release the connection from pool
func (*Session) CreateIndexes ¶
create indexes
func (*Session) CreateTable ¶
this function create a table according a bean
func (*Session) CreateUniques ¶
create uniques
func (*Session) Desc ¶
Method Desc provide desc order by query condition, the input parameters are columns.
func (*Session) Distinct ¶
use for distinct columns. Caution: when you are using cache, distinct will not be cached because cache system need id, but distinct will not provide id
func (*Session) DropIndexes ¶
drop indexes
func (*Session) DropTable ¶
drop table will drop table if exist, if drop failed, it will return error
func (*Session) Find ¶
Find retrieve records from table, condiBeans's non-empty fields are conditions. beans could be []Struct, []*Struct, map[int64]Struct map[int64]*Struct
func (*Session) Get ¶
get retrieve one record from database, bean's non-empty fields will be as conditions
func (*Session) Init ¶
func (session *Session) Init()
Method Init reset the session as the init status.
func (*Session) InsertMulti ¶
Insert multiple records
func (*Session) InsertOne ¶
Method InsertOne insert only one struct into database as a record. The in parameter bean must a struct or a point to struct. The return parameter is inserted and error
func (*Session) IsTableEmpty ¶ added in v0.4.3
func (*Session) IsTableExist ¶ added in v0.4.3
func (*Session) Iterate ¶
Iterate record by record handle records from table, condiBeans's non-empty fields are conditions. beans could be []Struct, []*Struct, map[int64]Struct map[int64]*Struct
func (*Session) Join ¶
func (session *Session) Join(join_operator string, tablename interface{}, condition string) *Session
The join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
func (*Session) NoAutoTime ¶
Method NoAutoTime means do not automatically give created field and updated field the current time on the current session temporarily
func (*Session) NoCache ¶
Method NoCache ask this session do not retrieve data from cache system and get data from database directly.
func (*Session) OrderBy ¶
Method OrderBy provide order by query condition, the input parameter is the content after order by on a sql statement.
func (*Session) Query ¶
func (session *Session) Query(sqlStr string, paramStr ...interface{}) (resultsSlice []map[string][]byte, err error)
Exec a raw sql and return records as []map[string][]byte
func (*Session) Rows ¶
Return sql.Rows compatible Rows obj, as a forward Iterator object for iterating record by record, bean's non-empty fields are conditions.
func (*Session) SetExpr ¶ added in v0.4.3
Method SetExpr provides a query string like "column = {expression}"
func (*Session) Sql ¶
Method Sql provides raw sql input parameter. When you have a complex SQL statement and cannot use Where, Id, In and etc. Methods to describe, you can use Sql.
func (*Session) StoreEngine ¶
Method StoreEngine is only avialble mysql dialect currently
func (*Session) Table ¶
Method core.Table can input a string or pointer to struct for special a table to operate.
func (*Session) Update ¶
Update records, bean's non-empty fields are updated contents, condiBean' non-empty filds are conditions CAUTION:
1.bool will defaultly be updated content nor conditions You should call UseBool if you have bool to use. 2.float32 & float64 may be not inexact as conditions
type SimpleLogger ¶ added in v0.4.1
type SimpleLogger struct { DEBUG *log.Logger ERR *log.Logger INFO *log.Logger WARN *log.Logger // contains filtered or unexported fields }
func NewSimpleLogger ¶ added in v0.4.1
func NewSimpleLogger(out io.Writer) *SimpleLogger
func NewSimpleLogger2 ¶ added in v0.4.1
func NewSimpleLogger2(out io.Writer, prefix string, flag int) *SimpleLogger
func NewSimpleLogger3 ¶ added in v0.4.1
func (*SimpleLogger) Debug ¶ added in v0.4.1
func (s *SimpleLogger) Debug(v ...interface{}) (err error)
func (*SimpleLogger) Debugf ¶ added in v0.4.1
func (s *SimpleLogger) Debugf(format string, v ...interface{}) (err error)
func (*SimpleLogger) Err ¶ added in v0.4.1
func (s *SimpleLogger) Err(v ...interface{}) (err error)
func (*SimpleLogger) Errf ¶ added in v0.4.1
func (s *SimpleLogger) Errf(format string, v ...interface{}) (err error)
func (*SimpleLogger) Info ¶ added in v0.4.1
func (s *SimpleLogger) Info(v ...interface{}) (err error)
func (*SimpleLogger) Infof ¶ added in v0.4.1
func (s *SimpleLogger) Infof(format string, v ...interface{}) (err error)
func (*SimpleLogger) Level ¶ added in v0.4.1
func (s *SimpleLogger) Level() core.LogLevel
func (*SimpleLogger) SetLevel ¶ added in v0.4.1
func (s *SimpleLogger) SetLevel(l core.LogLevel) (err error)
func (*SimpleLogger) Warning ¶ added in v0.4.1
func (s *SimpleLogger) Warning(v ...interface{}) (err error)
func (*SimpleLogger) Warningf ¶ added in v0.4.1
func (s *SimpleLogger) Warningf(format string, v ...interface{}) (err error)
type Statement ¶
type Statement struct { RefTable *core.Table Engine *Engine Start int LimitN int WhereStr string IdParam *core.PK Params []interface{} OrderStr string JoinStr string GroupByStr string HavingStr string ColumnStr string OmitStr string ConditionStr string AltTableName string RawSQL string RawParams []interface{} UseCascade bool UseAutoJoin bool StoreEngine string Charset string BeanArgs []interface{} UseCache bool UseAutoTime bool IsDistinct bool TableAlias string // contains filtered or unexported fields }
statement save all the sql info for executing SQL
func (*Statement) Asc ¶ added in v0.4.1
Method Asc provide asc order by query condition, the input parameters are columns.
func (*Statement) Id ¶
Generate "where id = ? " statment or for composite key "where key1 = ? and key2 = ?"
func (*Statement) Join ¶
func (statement *Statement) Join(join_operator string, tablename interface{}, condition string) *Statement
The join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
func (*Statement) JoinColumns ¶ added in v0.4.2
func (*Statement) SetExpr ¶ added in v0.4.3
Generate "Update ... Set column = {expression}" statment
type SyslogLogger ¶ added in v0.4.1
type SyslogLogger struct {
// contains filtered or unexported fields
}
func NewSyslogLogger ¶ added in v0.4.1
func NewSyslogLogger(w *syslog.Writer) *SyslogLogger
func (*SyslogLogger) Debug ¶ added in v0.4.1
func (s *SyslogLogger) Debug(v ...interface{}) (err error)
func (*SyslogLogger) Debugf ¶ added in v0.4.1
func (s *SyslogLogger) Debugf(format string, v ...interface{}) (err error)
func (*SyslogLogger) Err ¶ added in v0.4.1
func (s *SyslogLogger) Err(v ...interface{}) (err error)
func (*SyslogLogger) Errf ¶ added in v0.4.1
func (s *SyslogLogger) Errf(format string, v ...interface{}) (err error)
func (*SyslogLogger) Info ¶ added in v0.4.1
func (s *SyslogLogger) Info(v ...interface{}) (err error)
func (*SyslogLogger) Infof ¶ added in v0.4.1
func (s *SyslogLogger) Infof(format string, v ...interface{}) (err error)
func (*SyslogLogger) Level ¶ added in v0.4.1
func (s *SyslogLogger) Level() core.LogLevel
func (*SyslogLogger) SetLevel ¶ added in v0.4.1
func (s *SyslogLogger) SetLevel(l core.LogLevel) (err error)
SetLevel always return error, as current log/syslog package doesn't allow to set priority level after syslog.Writer created
func (*SyslogLogger) Warning ¶ added in v0.4.1
func (s *SyslogLogger) Warning(v ...interface{}) (err error)
func (*SyslogLogger) Warningf ¶ added in v0.4.1
func (s *SyslogLogger) Warningf(format string, v ...interface{}) (err error)
Source Files ¶
- doc.go
- engine.go
- error.go
- goracle_driver.go
- helpers.go
- logger.go
- lru_cacher.go
- memroy_store.go
- mssql_dialect.go
- mymysql_driver.go
- mysql_dialect.go
- mysql_driver.go
- oci8_driver.go
- odbc_driver.go
- oracle_dialect.go
- postgres_dialect.go
- pq_driver.go
- processors.go
- rows.go
- session.go
- sqlite3_dialect.go
- sqlite3_driver.go
- statement.go
- syslogger.go
- xorm.go