Documentation ¶
Overview ¶
Package xorm is a simple and powerful ORM for Go.
Installation ¶
Make sure you have installed Go 1.6+ 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 8 major ORM methods and many helpful methods to use to operate database.
1. Insert one or multiple 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 or one variable from database
has, err := engine.Get(&user) // SELECT * FROM user LIMIT 1 var id int64 has, err := engine.Table("user").Where("name = ?", name).Get(&id) // SELECT id FROM user WHERE name = ? LIMIT 1
3. Query multiple records from database
var sliceOfStructs []Struct err := engine.Find(&sliceOfStructs) // SELECT * FROM user var mapOfStructs = make(map[int64]Struct) err := engine.Find(&mapOfStructs) // SELECT * FROM user var int64s []int64 err := engine.Table("user").Cols("id").Find(&int64s) // SELECT id 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 condition
affected, err := engine.Where(...).Delete(&user) // DELETE FROM user Where ...
7. Count records
counts, err := engine.Count(&user) // SELECT count(*) AS total FROM user counts, err := engine.SQL("select count(*) FROM user").Count() // select count(*) FROM user
8. Sum records
sumFloat64, err := engine.Sum(&user, "id") // SELECT sum(id) from user sumFloat64s, err := engine.Sums(&user, "id1", "id2") // SELECT sum(id1), sum(id2) from user sumInt64s, err := engine.SumsInt(&user, "id1", "id2") // SELECT sum(id1), sum(id2) from user
Conditions ¶
The above 8 methods could use with condition methods chainable. Attention: the above 8 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}).Find(&users) // 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
var users []User engine.SQL("select * from user").Find(&users)
6. Cols, Omit, Distinct
var users []*User engine.Cols("col1, col2").Find(&users) // SELECT col1, col2 FROM user engine.Cols("col1", "col2").Where().Update(user) // UPDATE user set col1 = ?, col2 = ? Where ... engine.Omit("col1").Find(&users) // SELECT col2, col3 FROM user engine.Omit("col1").Insert(&user) // INSERT INTO table (non-col1) VALUES () engine.Distinct("col1").Find(&users) // SELECT DISTINCT col1 FROM user
7. Join, GroupBy, Having
engine.GroupBy("name").Having("name='xlw'").Find(&users) //SELECT * FROM user GROUP BY name HAVING name='xlw' engine.Join("LEFT", "userdetail", "user.id=userdetail.id").Find(&users) //SELECT * FROM user LEFT JOIN userdetail ON user.id=userdetail.id
More usage, please visit http://xorm.io/docs
Index ¶
- Constants
- Variables
- func AutoIncrTagHandler(ctx *tagContext) error
- func CacheTagHandler(ctx *tagContext) error
- func CommentTagHandler(ctx *tagContext) error
- func CreatedTagHandler(ctx *tagContext) error
- func DefaultTagHandler(ctx *tagContext) error
- func DeletedTagHandler(ctx *tagContext) error
- func ExtendsTagHandler(ctx *tagContext) error
- func IgnoreTagHandler(ctx *tagContext) error
- func IndexTagHandler(ctx *tagContext) error
- func LocalTagHandler(ctx *tagContext) error
- func NULLTagHandler(ctx *tagContext) error
- func NoCacheTagHandler(ctx *tagContext) error
- func NotNullTagHandler(ctx *tagContext) error
- func OnlyFromDBTagHandler(ctx *tagContext) error
- func OnlyToDBTagHandler(ctx *tagContext) error
- func PKTagHandler(ctx *tagContext) error
- func SQLTypeTagHandler(ctx *tagContext) error
- func UTCTagHandler(ctx *tagContext) error
- func UniqueTagHandler(ctx *tagContext) error
- func UpdatedTagHandler(ctx *tagContext) error
- func VersionTagHandler(ctx *tagContext) error
- type AfterDeleteProcessor
- type AfterInsertProcessor
- type AfterLoadProcessor
- type AfterLoadSessionProcessor
- type AfterSetProcessor
- type AfterUpdateProcessor
- type BeforeDeleteProcessor
- type BeforeInsertProcessor
- type BeforeSetProcessor
- type BeforeUpdateProcessor
- type Cell
- type DiscardLogger
- func (DiscardLogger) Debug(v ...interface{})
- func (DiscardLogger) Debugf(format string, v ...interface{})
- func (DiscardLogger) Error(v ...interface{})
- func (DiscardLogger) Errorf(format string, v ...interface{})
- func (DiscardLogger) Info(v ...interface{})
- func (DiscardLogger) Infof(format string, v ...interface{})
- func (DiscardLogger) IsShowSQL() bool
- func (DiscardLogger) Level() core.LogLevel
- func (DiscardLogger) SetLevel(l core.LogLevel)
- func (DiscardLogger) ShowSQL(show ...bool)
- func (DiscardLogger) Warn(v ...interface{})
- func (DiscardLogger) Warnf(format string, v ...interface{})
- 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) BufferSize(size int) *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) CondDeleted(colName string) builder.Cond
- func (engine *Engine) Count(ctx context.Context, bean ...interface{}) (int64, error)
- func (engine *Engine) CreateIndexes(ctx context.Context, bean interface{}) error
- func (engine *Engine) CreateTables(ctx context.Context, beans ...interface{}) error
- func (engine *Engine) CreateUniques(ctx context.Context, bean interface{}) error
- func (engine *Engine) DB() *core.DB
- func (engine *Engine) DBMetas(ctx context.Context) ([]*core.Table, error)
- func (engine *Engine) DataSourceName() string
- func (engine *Engine) Decr(column string, arg ...interface{}) *Session
- func (engine *Engine) Delete(ctx context.Context, 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) DropIndexes(ctx context.Context, bean interface{}) error
- func (engine *Engine) DropTables(ctx context.Context, beans ...interface{}) error
- func (engine *Engine) DumpAll(ctx context.Context, w io.Writer, tp ...core.DbType) error
- func (engine *Engine) DumpAllToFile(ctx context.Context, fp string, tp ...core.DbType) error
- func (engine *Engine) DumpTables(ctx context.Context, tables []*core.Table, w io.Writer, tp ...core.DbType) error
- func (engine *Engine) DumpTablesToFile(ctx context.Context, tables []*core.Table, fp string, tp ...core.DbType) error
- func (engine *Engine) Exec(ctx context.Context, sql string, args ...interface{}) (sql.Result, error)
- func (engine *Engine) Exist(ctx context.Context, bean ...interface{}) (bool, error)
- func (engine *Engine) Find(ctx context.Context, beans interface{}, condiBeans ...interface{}) error
- func (engine *Engine) Get(ctx context.Context, bean interface{}) (bool, error)
- func (engine *Engine) GetColumnMapper() core.IMapper
- func (engine *Engine) GetDefaultCacher() core.Cacher
- func (engine *Engine) GetTZDatabase() *time.Location
- func (engine *Engine) GetTZLocation() *time.Location
- func (engine *Engine) GetTableMapper() core.IMapper
- 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) Id(id interface{}) *Session
- func (engine *Engine) IdOf(bean interface{}) core.PKdeprecated
- func (engine *Engine) IdOfV(rv reflect.Value) core.PKdeprecated
- func (engine *Engine) Import(ctx context.Context, r io.Reader) ([]sql.Result, error)
- func (engine *Engine) ImportFile(ctx context.Context, 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(ctx context.Context, beans ...interface{}) (int64, error)
- func (engine *Engine) InsertOne(ctx context.Context, bean interface{}) (int64, error)
- func (engine *Engine) IsTableEmpty(ctx context.Context, bean interface{}) (bool, error)
- func (engine *Engine) IsTableExist(ctx context.Context, beanOrTableName interface{}) (bool, error)
- func (engine *Engine) Iterate(ctx context.Context, bean interface{}, fun IterFunc) error
- func (engine *Engine) Join(joinOperator string, tablename interface{}, condition string, ...) *Session
- func (engine *Engine) Limit(limit int, start ...int) *Session
- func (engine *Engine) Logger() func(context.Context) core.ILogger
- func (engine *Engine) MapCacher(bean interface{}, cacher core.Cacher) error
- func (engine *Engine) MustCols(columns ...string) *Session
- func (engine *Engine) NewDB(opts ...core.Option) (*core.DB, error)
- func (engine *Engine) NewSession() *Session
- func (engine *Engine) NoAutoCondition(no ...bool) *Session
- func (engine *Engine) NoAutoTime() *Session
- func (engine *Engine) NoCache() *Session
- func (engine *Engine) NoCascade() *Session
- func (engine *Engine) NotIn(column string, args ...interface{}) *Session
- func (engine *Engine) Nullable(columns ...string) *Session
- func (engine *Engine) Omit(columns ...string) *Session
- func (engine *Engine) OrderBy(order string) *Session
- func (engine *Engine) Ping(ctx context.Context) error
- func (engine *Engine) PingContext(ctx context.Context) error
- func (engine *Engine) Query(ctx context.Context, sqlorArgs ...interface{}) (resultsSlice []map[string][]byte, err error)
- func (engine *Engine) QueryInterface(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]interface{}, error)
- func (engine *Engine) QueryString(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]string, error)
- func (engine *Engine) Quote(value string) string
- func (engine *Engine) QuoteStr() string
- func (engine *Engine) QuoteTo(buf *bytes.Buffer, value string)
- func (engine *Engine) Rows(ctx context.Context, bean interface{}) (*Rows, error)
- func (engine *Engine) SQL(query interface{}, args ...interface{}) *Session
- func (engine *Engine) SQLType(c *core.Column) string
- func (engine *Engine) Select(str string) *Session
- func (engine *Engine) SetColumnMapper(mapper core.IMapper)
- func (engine *Engine) SetConnMaxLifetime(d time.Duration)
- 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) SetLogLevel(level core.LogLevel)
- func (engine *Engine) SetLogger(logger func(context.Context) core.ILogger)
- func (engine *Engine) SetMapper(mapper core.IMapper)
- func (engine *Engine) SetMaxIdleConns(conns int)
- func (engine *Engine) SetMaxOpenConns(conns int)
- func (engine *Engine) SetTZDatabase(tz *time.Location)
- func (engine *Engine) SetTZLocation(tz *time.Location)
- func (engine *Engine) SetTableMapper(mapper core.IMapper)
- func (engine *Engine) ShowExecTime(show ...bool)
- func (engine *Engine) ShowSQL(show ...bool)
- func (engine *Engine) Sql(querystring string, args ...interface{}) *Sessiondeprecated
- func (engine *Engine) SqlType(c *core.Column) stringdeprecated
- func (engine *Engine) StoreEngine(storeEngine string) *Session
- func (engine *Engine) Sum(ctx context.Context, bean interface{}, colName string) (float64, error)
- func (engine *Engine) SumInt(ctx context.Context, bean interface{}, colName string) (int64, error)
- func (engine *Engine) Sums(ctx context.Context, bean interface{}, colNames ...string) ([]float64, error)
- func (engine *Engine) SumsInt(ctx context.Context, bean interface{}, colNames ...string) ([]int64, error)
- func (engine *Engine) SupportInsertMany() bool
- func (engine *Engine) Sync(ctx context.Context, beans ...interface{}) error
- func (engine *Engine) Sync2(ctx context.Context, beans ...interface{}) error
- func (engine *Engine) Table(tableNameOrBean interface{}) *Session
- func (engine *Engine) TableInfo(bean interface{}) *Table
- func (engine *Engine) UnMapType(t reflect.Type)
- func (engine *Engine) Unscoped() *Session
- func (engine *Engine) Update(ctx context.Context, bean interface{}, condiBeans ...interface{}) (int64, error)
- func (engine *Engine) UseBool(columns ...string) *Session
- func (engine *Engine) Where(query interface{}, args ...interface{}) *Session
- type EngineGroup
- func (eg *EngineGroup) Close() error
- func (eg *EngineGroup) Master() *Engine
- func (eg *EngineGroup) Ping(ctx context.Context) error
- func (eg *EngineGroup) SetColumnMapper(mapper core.IMapper)
- func (eg *EngineGroup) SetConnMaxLifetime(d time.Duration)
- func (eg *EngineGroup) SetDefaultCacher(cacher core.Cacher)
- func (eg *EngineGroup) SetLogLevel(level core.LogLevel)
- func (eg *EngineGroup) SetLogger(logger func(context.Context) core.ILogger)
- func (eg *EngineGroup) SetMapper(mapper core.IMapper)
- func (eg *EngineGroup) SetMaxIdleConns(conns int)
- func (eg *EngineGroup) SetMaxOpenConns(conns int)
- func (eg *EngineGroup) SetPolicy(policy GroupPolicy) *EngineGroup
- func (eg *EngineGroup) SetTableMapper(mapper core.IMapper)
- func (eg *EngineGroup) ShowExecTime(show ...bool)
- func (eg *EngineGroup) ShowSQL(show ...bool)
- func (eg *EngineGroup) Slave() *Engine
- func (eg *EngineGroup) Slaves() []*Engine
- type EngineInterface
- type GroupPolicy
- type GroupPolicyHandler
- type Interface
- 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 Option
- func ColumnMapperOption(im core.IMapper) Option
- func ConnMaxLifetimeOption(d time.Duration) Option
- func DefaultCacherOption(cacher core.Cacher) Option
- func DisableGlobalCacheOption(disable bool) Option
- func EnableTraceOption(enable bool) Option
- func LoggerOption(l func(context.Context) core.ILogger) Option
- func MapperOption(mapper core.IMapper) Option
- func MaxIdleConnsOption(conns int) Option
- func MaxOpenConnsOption(conns int) Option
- func ShowExecTimeOption(show bool) Option
- func ShowSQLOption(show bool) Option
- func TZDatabaseOption(local *time.Location) Option
- func TZLocationOption(local *time.Location) Option
- func TableMapperOption(im core.IMapper) Option
- 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(query interface{}, 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) BufferSize(size int) *Session
- func (session *Session) Cascade(trueOrFalse ...bool) *Session
- func (session *Session) Charset(charset string) *Session
- func (session *Session) Clone() *Session
- func (session *Session) Close()
- func (session *Session) Cols(columns ...string) *Session
- func (session *Session) Commit() error
- func (session *Session) Conds() builder.Cond
- func (session *Session) Count(ctx context.Context, bean ...interface{}) (int64, error)
- func (session *Session) CreateIndexes(ctx context.Context, bean interface{}) error
- func (session *Session) CreateTable(ctx context.Context, bean interface{}) error
- func (session *Session) CreateUniques(ctx context.Context, bean interface{}) error
- func (session *Session) DB() *core.DB
- func (session *Session) Decr(column string, arg ...interface{}) *Session
- func (session *Session) Delete(ctx context.Context, bean interface{}) (int64, error)
- func (session *Session) Desc(colNames ...string) *Session
- func (session *Session) Distinct(columns ...string) *Session
- func (session *Session) DropIndexes(ctx context.Context, bean interface{}) error
- func (session *Session) DropTable(ctx context.Context, beanOrTableName interface{}) error
- func (session *Session) Exec(ctx context.Context, sqlStr string, args ...interface{}) (sql.Result, error)
- func (session *Session) Exist(ctx context.Context, bean ...interface{}) (bool, error)
- func (session *Session) Find(ctx context.Context, rowsSlicePtr interface{}, condiBean ...interface{}) error
- func (session *Session) ForUpdate() *Session
- func (session *Session) Get(ctx context.Context, 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) Id(id interface{}) *Sessiondeprecated
- 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(ctx context.Context, beans ...interface{}) (int64, error)
- func (session *Session) InsertMulti(ctx context.Context, rowsSlicePtr interface{}) (int64, error)
- func (session *Session) InsertOne(ctx context.Context, bean interface{}) (int64, error)
- func (session *Session) IsClosed() bool
- func (session *Session) IsTableEmpty(ctx context.Context, bean interface{}) (bool, error)
- func (session *Session) IsTableExist(ctx context.Context, beanOrTableName interface{}) (bool, error)
- func (session *Session) Iterate(ctx context.Context, bean interface{}, fun IterFunc) error
- func (session *Session) Join(joinOperator string, tablename interface{}, condition string, ...) *Session
- func (session *Session) LastSQL() (string, []interface{})
- func (session *Session) Limit(limit int, start ...int) *Session
- func (session *Session) MustCols(columns ...string) *Session
- func (session *Session) NoAutoCondition(no ...bool) *Session
- func (session *Session) NoAutoTime() *Session
- func (session *Session) NoCache() *Session
- func (session *Session) NoCascade() *Session
- func (session *Session) NotIn(column string, args ...interface{}) *Session
- func (session *Session) Nullable(columns ...string) *Session
- func (session *Session) Omit(columns ...string) *Session
- func (session *Session) Or(query interface{}, args ...interface{}) *Session
- func (session *Session) OrderBy(order string) *Session
- func (session *Session) Ping(ctx context.Context) error
- func (session *Session) PingContext(ctx context.Context) error
- func (session *Session) Prepare() *Session
- func (session *Session) Query(ctx context.Context, sqlorArgs ...interface{}) ([]map[string][]byte, error)
- func (session *Session) QueryInterface(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]interface{}, error)
- func (session *Session) QueryString(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]string, error)
- func (session *Session) Rollback() error
- func (session *Session) Rows(ctx context.Context, bean interface{}) (*Rows, error)
- func (session *Session) SQL(query interface{}, args ...interface{}) *Session
- func (session *Session) Select(str string) *Session
- func (session *Session) SetExpr(column string, expression string) *Session
- func (session *Session) Sql(query string, args ...interface{}) *Sessiondeprecated
- func (session *Session) StoreEngine(storeEngine string) *Session
- func (session *Session) Sum(ctx context.Context, bean interface{}, columnName string) (res float64, err error)
- func (session *Session) SumInt(ctx context.Context, bean interface{}, columnName string) (res int64, err error)
- func (session *Session) Sums(ctx context.Context, bean interface{}, columnNames ...string) ([]float64, error)
- func (session *Session) SumsInt(ctx context.Context, bean interface{}, columnNames ...string) ([]int64, error)
- func (session *Session) Sync2(ctx context.Context, beans ...interface{}) error
- func (session *Session) Table(tableNameOrBean interface{}) *Session
- func (session *Session) Unscoped() *Session
- func (session *Session) Update(ctx context.Context, bean interface{}, condiBean ...interface{}) (int64, error)
- func (session *Session) UseBool(columns ...string) *Session
- func (session *Session) Where(query interface{}, args ...interface{}) *Session
- type SimpleLogger
- func (s *SimpleLogger) Debug(v ...interface{})
- func (s *SimpleLogger) Debugf(format string, v ...interface{})
- func (s *SimpleLogger) Error(v ...interface{})
- func (s *SimpleLogger) Errorf(format string, v ...interface{})
- func (s *SimpleLogger) Info(v ...interface{})
- func (s *SimpleLogger) Infof(format string, v ...interface{})
- func (s *SimpleLogger) IsShowSQL() bool
- func (s *SimpleLogger) Level() core.LogLevel
- func (s *SimpleLogger) SetLevel(l core.LogLevel)
- func (s *SimpleLogger) ShowSQL(show ...bool)
- func (s *SimpleLogger) Warn(v ...interface{})
- func (s *SimpleLogger) Warnf(format string, v ...interface{})
- type Statement
- func (statement *Statement) Alias(alias string) *Statement
- func (statement *Statement) AllCols() *Statement
- func (statement *Statement) And(query interface{}, 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) ForUpdate() *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(joinOP string, tablename interface{}, condition string, args ...interface{}) *Statement
- func (statement *Statement) Limit(limit int, start ...int) *Statement
- func (statement *Statement) MustCols(columns ...string) *Statement
- func (statement *Statement) NoAutoCondition(no ...bool) *Statement
- func (statement *Statement) NotIn(column string, args ...interface{}) *Statement
- func (statement *Statement) Nullable(columns ...string)
- func (statement *Statement) Omit(columns ...string)
- func (statement *Statement) Or(query interface{}, args ...interface{}) *Statement
- func (statement *Statement) OrderBy(order string) *Statement
- func (statement *Statement) SQL(query interface{}, args ...interface{}) *Statement
- func (statement *Statement) Select(str string) *Statement
- func (statement *Statement) SetExpr(column string, expression string) *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(query interface{}, args ...interface{}) *Statement
- type SyslogLogger
- func (s *SyslogLogger) Debug(v ...interface{})
- func (s *SyslogLogger) Debugf(format string, v ...interface{})
- func (s *SyslogLogger) Error(v ...interface{})
- func (s *SyslogLogger) Errorf(format string, v ...interface{})
- func (s *SyslogLogger) Info(v ...interface{})
- func (s *SyslogLogger) Infof(format string, v ...interface{})
- func (s *SyslogLogger) IsShowSQL() bool
- func (s *SyslogLogger) Level() core.LogLevel
- func (s *SyslogLogger) SetLevel(l core.LogLevel)
- func (s *SyslogLogger) ShowSQL(show ...bool)
- func (s *SyslogLogger) Warn(v ...interface{})
- func (s *SyslogLogger) Warnf(format string, v ...interface{})
- type Table
- type TableName
Constants ¶
const ( DEFAULT_LOG_PREFIX = "[xorm]" DEFAULT_LOG_FLAG = log.Ldate | log.Lmicroseconds DEFAULT_LOG_LEVEL = core.LOG_DEBUG )
default log options
const ( // Version show the xorm's version Version string = "0.6.4.0910" )
Variables ¶
var ( // ErrParamsType params error ErrParamsType = errors.New("Params type error") // ErrTableNotFound table not found error ErrTableNotFound = errors.New("Not found table") // ErrUnSupportedType unsupported error ErrUnSupportedType = errors.New("Unsupported type error") // ErrNotExist record is not exist error ErrNotExist = errors.New("Not exist error") // ErrCacheFailed cache failed error ErrCacheFailed = errors.New("Cache failed") // ErrNeedDeletedCond delete needs less one condition error ErrNeedDeletedCond = errors.New("Delete need at least one condition") // ErrNotImplemented not implemented ErrNotImplemented = errors.New("Not implemented") // ErrConditionType condition type unsupported ErrConditionType = errors.New("Unsupported conditon type") )
Functions ¶
func AutoIncrTagHandler ¶ added in v0.6.2
func AutoIncrTagHandler(ctx *tagContext) error
AutoIncrTagHandler describes autoincr tag handler
func CacheTagHandler ¶ added in v0.6.2
func CacheTagHandler(ctx *tagContext) error
CacheTagHandler describes cache tag handler
func CommentTagHandler ¶ added in v0.6.3
func CommentTagHandler(ctx *tagContext) error
CommentTagHandler add comment to column
func CreatedTagHandler ¶ added in v0.6.2
func CreatedTagHandler(ctx *tagContext) error
CreatedTagHandler describes created tag handler
func DefaultTagHandler ¶ added in v0.6.2
func DefaultTagHandler(ctx *tagContext) error
DefaultTagHandler describes default tag handler
func DeletedTagHandler ¶ added in v0.6.2
func DeletedTagHandler(ctx *tagContext) error
DeletedTagHandler describes deleted tag handler
func ExtendsTagHandler ¶ added in v0.6.2
func ExtendsTagHandler(ctx *tagContext) error
ExtendsTagHandler describes extends tag handler
func IgnoreTagHandler ¶ added in v0.6.2
func IgnoreTagHandler(ctx *tagContext) error
IgnoreTagHandler describes ignored tag handler
func IndexTagHandler ¶ added in v0.6.2
func IndexTagHandler(ctx *tagContext) error
IndexTagHandler describes index tag handler
func LocalTagHandler ¶ added in v0.6.2
func LocalTagHandler(ctx *tagContext) error
LocalTagHandler describes local tag handler
func NULLTagHandler ¶ added in v0.6.2
func NULLTagHandler(ctx *tagContext) error
NULLTagHandler describes null tag handler
func NoCacheTagHandler ¶ added in v0.6.2
func NoCacheTagHandler(ctx *tagContext) error
NoCacheTagHandler describes nocache tag handler
func NotNullTagHandler ¶ added in v0.6.2
func NotNullTagHandler(ctx *tagContext) error
NotNullTagHandler describes notnull tag handler
func OnlyFromDBTagHandler ¶ added in v0.6.2
func OnlyFromDBTagHandler(ctx *tagContext) error
OnlyFromDBTagHandler describes mapping direction tag handler
func OnlyToDBTagHandler ¶ added in v0.6.2
func OnlyToDBTagHandler(ctx *tagContext) error
OnlyToDBTagHandler describes mapping direction tag handler
func PKTagHandler ¶ added in v0.6.2
func PKTagHandler(ctx *tagContext) error
PKTagHandler decribes primary key tag handler
func SQLTypeTagHandler ¶ added in v0.6.2
func SQLTypeTagHandler(ctx *tagContext) error
SQLTypeTagHandler describes SQL Type tag handler
func UTCTagHandler ¶ added in v0.6.2
func UTCTagHandler(ctx *tagContext) error
UTCTagHandler describes utc tag handler
func UniqueTagHandler ¶ added in v0.6.2
func UniqueTagHandler(ctx *tagContext) error
UniqueTagHandler describes unique tag handler
func UpdatedTagHandler ¶ added in v0.6.2
func UpdatedTagHandler(ctx *tagContext) error
UpdatedTagHandler describes updated tag handler
func VersionTagHandler ¶ added in v0.6.2
func VersionTagHandler(ctx *tagContext) error
VersionTagHandler describes version tag handler
Types ¶
type AfterDeleteProcessor ¶
type AfterDeleteProcessor interface {
AfterDelete()
}
AfterDeleteProcessor executed after an object has been deleted
type AfterInsertProcessor ¶
type AfterInsertProcessor interface {
AfterInsert()
}
AfterInsertProcessor executed after an object is persisted to the database
type AfterLoadProcessor ¶ added in v0.6.4
type AfterLoadProcessor interface {
AfterLoad()
}
AfterLoadProcessor executed after an ojbect has been loaded from database
type AfterLoadSessionProcessor ¶ added in v0.6.4
type AfterLoadSessionProcessor interface {
AfterLoad(*Session)
}
AfterLoadSessionProcessor executed after an ojbect has been loaded from database with session parameter
type AfterSetProcessor ¶ added in v0.4.4
AfterSetProcessor executed after data set to the struct fields
type AfterUpdateProcessor ¶
type AfterUpdateProcessor interface {
AfterUpdate()
}
AfterUpdateProcessor executed after an object has been updated
type BeforeDeleteProcessor ¶
type BeforeDeleteProcessor interface {
BeforeDelete()
}
BeforeDeleteProcessor executed before an object is deleted
type BeforeInsertProcessor ¶
type BeforeInsertProcessor interface {
BeforeInsert()
}
BeforeInsertProcessor executed before an object is initially persisted to the database
type BeforeSetProcessor ¶ added in v0.4.1
BeforeSetProcessor executed before data set to the struct fields
type BeforeUpdateProcessor ¶
type BeforeUpdateProcessor interface {
BeforeUpdate()
}
BeforeUpdateProcessor executed before an object is updated
type DiscardLogger ¶ added in v0.5.3
type DiscardLogger struct{}
DiscardLogger don't log implementation for core.ILogger
func (DiscardLogger) Debug ¶ added in v0.5.3
func (DiscardLogger) Debug(v ...interface{})
Debug empty implementation
func (DiscardLogger) Debugf ¶ added in v0.5.3
func (DiscardLogger) Debugf(format string, v ...interface{})
Debugf empty implementation
func (DiscardLogger) Error ¶ added in v0.5.3
func (DiscardLogger) Error(v ...interface{})
Error empty implementation
func (DiscardLogger) Errorf ¶ added in v0.5.3
func (DiscardLogger) Errorf(format string, v ...interface{})
Errorf empty implementation
func (DiscardLogger) Info ¶ added in v0.5.3
func (DiscardLogger) Info(v ...interface{})
Info empty implementation
func (DiscardLogger) Infof ¶ added in v0.5.3
func (DiscardLogger) Infof(format string, v ...interface{})
Infof empty implementation
func (DiscardLogger) IsShowSQL ¶ added in v0.5.3
func (DiscardLogger) IsShowSQL() bool
IsShowSQL empty implementation
func (DiscardLogger) Level ¶ added in v0.5.3
func (DiscardLogger) Level() core.LogLevel
Level empty implementation
func (DiscardLogger) SetLevel ¶ added in v0.5.3
func (DiscardLogger) SetLevel(l core.LogLevel)
SetLevel empty implementation
func (DiscardLogger) ShowSQL ¶ added in v0.5.3
func (DiscardLogger) ShowSQL(show ...bool)
ShowSQL empty implementation
func (DiscardLogger) Warn ¶ added in v0.5.3
func (DiscardLogger) Warn(v ...interface{})
Warn empty implementation
func (DiscardLogger) Warnf ¶ added in v0.5.3
func (DiscardLogger) Warnf(format string, v ...interface{})
Warnf empty implementation
type Engine ¶
type Engine struct { ColumnMapper core.IMapper TableMapper core.IMapper TagIdentifier string Tables map[reflect.Type]*core.Table Cacher core.Cacher TZLocation *time.Location // The timezone of the application DatabaseTZ *time.Location // The timezone of the database // 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 NewEngine ¶
NewEngine new a db manager according to the parameter. Currently support four drivers
func (*Engine) Asc ¶
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 ¶
AutoIncrStr Database's autoincrement statement
func (*Engine) BufferSize ¶ added in v0.6.4
BufferSize sets buffer size for iterate
func (*Engine) ClearCache ¶
ClearCache if enabled cache, clear some tables' cache
func (*Engine) ClearCacheBean ¶
ClearCacheBean if enabled cache, clear the cache bean
func (*Engine) CondDeleted ¶ added in v0.6.3
CondDeleted returns the conditions whether a record is soft deleted.
func (*Engine) CreateIndexes ¶
CreateIndexes create indexes
func (*Engine) CreateTables ¶
CreateTables create tabls according bean
func (*Engine) CreateUniques ¶
CreateUniques create uniques
func (*Engine) DataSourceName ¶
DataSourceName return the current connection string
func (*Engine) Distinct ¶
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 ¶
DriverName return the current sql driver's name
func (*Engine) DropIndexes ¶ added in v0.6.3
DropIndexes drop indexes of a table
func (*Engine) DropTables ¶
DropTables drop specify tables
func (*Engine) DumpAllToFile ¶ added in v0.4.1
DumpAllToFile dump database all table structs and data to a file
func (*Engine) DumpTables ¶ added in v0.5.1
func (engine *Engine) DumpTables(ctx context.Context, tables []*core.Table, w io.Writer, tp ...core.DbType) error
DumpTables dump specify tables to io.Writer
func (*Engine) DumpTablesToFile ¶ added in v0.5.1
func (engine *Engine) DumpTablesToFile(ctx context.Context, tables []*core.Table, fp string, tp ...core.DbType) error
DumpTablesToFile dump specified tables to SQL file.
func (*Engine) Exec ¶
func (engine *Engine) Exec(ctx context.Context, sql string, args ...interface{}) (sql.Result, error)
Exec raw sql
func (*Engine) Exist ¶ added in v0.6.3
Exist returns true if the record exist otherwise return false
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) GetColumnMapper ¶ added in v0.6.4
GetColumnMapper returns the column name mapper
func (*Engine) GetDefaultCacher ¶ added in v0.6.4
GetDefaultCacher returns the default cacher
func (*Engine) GetTZDatabase ¶ added in v0.6.4
GetTZDatabase returns time zone of the database
func (*Engine) GetTZLocation ¶ added in v0.6.4
GetTZLocation returns time zone of the application
func (*Engine) GetTableMapper ¶ added in v0.6.4
GetTableMapper returns the table name mapper
func (*Engine) GobRegister ¶ added in v0.4.1
GobRegister register one struct to gob for cache use
func (*Engine) ImportFile ¶ added in v0.4.1
ImportFile SQL DDL file
func (*Engine) IsTableEmpty ¶
IsTableEmpty if a table has any reocrd
func (*Engine) IsTableExist ¶
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 ¶
func (engine *Engine) Join(joinOperator string, tablename interface{}, condition string, args ...interface{}) *Session
Join the join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
func (*Engine) NoAutoCondition ¶ added in v0.4.5
NoAutoCondition disable auto generate Where condition from bean or not
func (*Engine) NoAutoTime ¶
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 ¶
NoCache If you has set default cacher, and you want temporilly stop use cache, you can use NoCache()
func (*Engine) Nullable ¶ added in v0.4.4
Nullable set null when column is zero-value and nullable for update
func (*Engine) PingContext ¶ added in v0.6.4
PingContext tests if database is alive
func (*Engine) Query ¶
func (engine *Engine) Query(ctx context.Context, sqlorArgs ...interface{}) (resultsSlice []map[string][]byte, err error)
Query a raw sql and return records as []map[string][]byte
func (*Engine) QueryInterface ¶ added in v0.6.4
func (engine *Engine) QueryInterface(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]interface{}, error)
QueryInterface runs a raw sql and return records as []map[string]interface{}
func (*Engine) QueryString ¶ added in v0.6.2
func (engine *Engine) QueryString(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]string, error)
QueryString runs a raw sql and return records as []map[string]string
func (*Engine) QuoteStr ¶
QuoteStr Engine's database use which character as quote. mysql, sqlite use ` and postgres use "
func (*Engine) Rows ¶
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) SQL ¶ added in v0.5.6
SQL method let's you manually 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) SetColumnMapper ¶
SetColumnMapper set the column name mapping rule
func (*Engine) SetConnMaxLifetime ¶ added in v0.6.3
SetConnMaxLifetime sets the maximum amount of time a connection may be reused.
func (*Engine) SetDefaultCacher ¶
SetDefaultCacher set the default cacher. Xorm's default not enable cacher.
func (*Engine) SetDisableGlobalCache ¶ added in v0.4.1
SetDisableGlobalCache disable global cache or not
func (*Engine) SetExpr ¶ added in v0.4.3
SetExpr provides a update string like "column = {expression}"
func (*Engine) SetLogLevel ¶ added in v0.6.4
SetLogLevel sets the logger level
func (*Engine) SetMaxIdleConns ¶
SetMaxIdleConns set the max idle connections on pool, default is 2
func (*Engine) SetMaxOpenConns ¶ added in v0.4.1
SetMaxOpenConns is only available for go 1.2+
func (*Engine) SetTZDatabase ¶ added in v0.6.4
SetTZDatabase sets time zone of the database
func (*Engine) SetTZLocation ¶ added in v0.6.4
SetTZLocation sets time zone of the application
func (*Engine) SetTableMapper ¶
SetTableMapper set the table name mapping rule
func (*Engine) ShowExecTime ¶ added in v0.5.0
ShowExecTime show SQL statement and execute time or not on logger if log level is great than INFO
func (*Engine) ShowSQL ¶
ShowSQL show SQL statement or not on logger if log level is great than INFO
func (*Engine) StoreEngine ¶
StoreEngine set store engine when create table, only support mysql now
func (*Engine) Sum ¶ added in v0.5.6
Sum sum the records by some column. bean's non-empty fields are conditions.
func (*Engine) SumInt ¶ added in v0.6.3
SumInt sum the records by some column. bean's non-empty fields are conditions.
func (*Engine) Sums ¶ added in v0.5.6
func (engine *Engine) Sums(ctx context.Context, bean interface{}, colNames ...string) ([]float64, error)
Sums sum the records by some columns. bean's non-empty fields are conditions.
func (*Engine) SumsInt ¶ added in v0.5.6
func (engine *Engine) SumsInt(ctx context.Context, bean interface{}, colNames ...string) ([]int64, error)
SumsInt like Sums but return slice of int64 instead of float64.
func (*Engine) SupportInsertMany ¶
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 ¶
func (engine *Engine) Update(ctx context.Context, bean interface{}, condiBeans ...interface{}) (int64, error)
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 EngineGroup ¶ added in v0.6.4
type EngineGroup struct { *Engine // contains filtered or unexported fields }
EngineGroup defines an engine group
func NewEngineGroup ¶ added in v0.6.4
func NewEngineGroup(args1 interface{}, args2 interface{}, policies ...GroupPolicy) (*EngineGroup, error)
NewEngineGroup creates a new engine group
func (*EngineGroup) Master ¶ added in v0.6.4
func (eg *EngineGroup) Master() *Engine
Master returns the master engine
func (*EngineGroup) Ping ¶ added in v0.6.4
func (eg *EngineGroup) Ping(ctx context.Context) error
Ping tests if database is alive
func (*EngineGroup) SetColumnMapper ¶ added in v0.6.4
func (eg *EngineGroup) SetColumnMapper(mapper core.IMapper)
SetColumnMapper set the column name mapping rule
func (*EngineGroup) SetConnMaxLifetime ¶ added in v0.6.4
func (eg *EngineGroup) SetConnMaxLifetime(d time.Duration)
SetConnMaxLifetime sets the maximum amount of time a connection may be reused.
func (*EngineGroup) SetDefaultCacher ¶ added in v0.6.4
func (eg *EngineGroup) SetDefaultCacher(cacher core.Cacher)
SetDefaultCacher set the default cacher
func (*EngineGroup) SetLogLevel ¶ added in v0.6.4
func (eg *EngineGroup) SetLogLevel(level core.LogLevel)
SetLogLevel sets the logger level
func (*EngineGroup) SetLogger ¶ added in v0.6.4
func (eg *EngineGroup) SetLogger(logger func(context.Context) core.ILogger)
SetLogger set the new logger
func (*EngineGroup) SetMapper ¶ added in v0.6.4
func (eg *EngineGroup) SetMapper(mapper core.IMapper)
SetMapper set the name mapping rules
func (*EngineGroup) SetMaxIdleConns ¶ added in v0.6.4
func (eg *EngineGroup) SetMaxIdleConns(conns int)
SetMaxIdleConns set the max idle connections on pool, default is 2
func (*EngineGroup) SetMaxOpenConns ¶ added in v0.6.4
func (eg *EngineGroup) SetMaxOpenConns(conns int)
SetMaxOpenConns is only available for go 1.2+
func (*EngineGroup) SetPolicy ¶ added in v0.6.4
func (eg *EngineGroup) SetPolicy(policy GroupPolicy) *EngineGroup
SetPolicy set the group policy
func (*EngineGroup) SetTableMapper ¶ added in v0.6.4
func (eg *EngineGroup) SetTableMapper(mapper core.IMapper)
SetTableMapper set the table name mapping rule
func (*EngineGroup) ShowExecTime ¶ added in v0.6.4
func (eg *EngineGroup) ShowExecTime(show ...bool)
ShowExecTime show SQL statement and execute time or not on logger if log level is great than INFO
func (*EngineGroup) ShowSQL ¶ added in v0.6.4
func (eg *EngineGroup) ShowSQL(show ...bool)
ShowSQL show SQL statement or not on logger if log level is great than INFO
func (*EngineGroup) Slave ¶ added in v0.6.4
func (eg *EngineGroup) Slave() *Engine
Slave returns one of the physical databases which is a slave according the policy
func (*EngineGroup) Slaves ¶ added in v0.6.4
func (eg *EngineGroup) Slaves() []*Engine
Slaves returns all the slaves
type EngineInterface ¶ added in v0.6.4
type EngineInterface interface { Interface Before(func(interface{})) *Session Charset(charset string) *Session CreateTables(context.Context, ...interface{}) error DBMetas(context.Context) ([]*core.Table, error) Dialect() core.Dialect DropTables(context.Context, ...interface{}) error DumpAllToFile(ctx context.Context, fp string, tp ...core.DbType) error GetColumnMapper() core.IMapper GetDefaultCacher() core.Cacher GetTableMapper() core.IMapper GetTZDatabase() *time.Location GetTZLocation() *time.Location NewSession() *Session NoAutoTime() *Session Quote(string) string SetDefaultCacher(core.Cacher) SetLogLevel(core.LogLevel) SetMapper(core.IMapper) SetTZDatabase(tz *time.Location) SetTZLocation(tz *time.Location) ShowSQL(show ...bool) Sync(context.Context, ...interface{}) error Sync2(context.Context, ...interface{}) error StoreEngine(storeEngine string) *Session TableInfo(bean interface{}) *Table UnMapType(reflect.Type) }
EngineInterface defines the interface which Engine, EngineGroup will implementate.
type GroupPolicy ¶ added in v0.6.4
type GroupPolicy interface {
Slave(*EngineGroup) *Engine
}
GroupPolicy is be used by chosing the current slave from slaves
type GroupPolicyHandler ¶ added in v0.6.4
type GroupPolicyHandler func(*EngineGroup) *Engine
GroupPolicyHandler should be used when a function is a GroupPolicy
func LeastConnPolicy ¶ added in v0.6.4
func LeastConnPolicy() GroupPolicyHandler
LeastConnPolicy implements GroupPolicy, every time will get the least connections slave
func RandomPolicy ¶ added in v0.6.4
func RandomPolicy() GroupPolicyHandler
RandomPolicy implmentes randomly chose the slave of slaves
func RoundRobinPolicy ¶ added in v0.6.4
func RoundRobinPolicy() GroupPolicyHandler
func WeightRandomPolicy ¶ added in v0.6.4
func WeightRandomPolicy(weights []int) GroupPolicyHandler
WeightRandomPolicy implmentes randomly chose the slave of slaves
func WeightRoundRobinPolicy ¶ added in v0.6.4
func WeightRoundRobinPolicy(weights []int) GroupPolicyHandler
func (GroupPolicyHandler) Slave ¶ added in v0.6.4
func (h GroupPolicyHandler) Slave(eg *EngineGroup) *Engine
Slave implements the chosen of slaves
type Interface ¶ added in v0.6.4
type Interface interface { AllCols() *Session Alias(alias string) *Session Asc(colNames ...string) *Session BufferSize(size int) *Session Cols(columns ...string) *Session Count(context.Context, ...interface{}) (int64, error) CreateIndexes(ctx context.Context, bean interface{}) error CreateUniques(ctx context.Context, bean interface{}) error Decr(column string, arg ...interface{}) *Session Desc(...string) *Session Delete(context.Context, interface{}) (int64, error) Distinct(columns ...string) *Session DropIndexes(ctx context.Context, bean interface{}) error Exec(context.Context, string, ...interface{}) (sql.Result, error) Exist(ctx context.Context, bean ...interface{}) (bool, error) Find(context.Context, interface{}, ...interface{}) error Get(context.Context, interface{}) (bool, error) GroupBy(keys string) *Session ID(interface{}) *Session In(string, ...interface{}) *Session Incr(column string, arg ...interface{}) *Session Insert(context.Context, ...interface{}) (int64, error) InsertOne(context.Context, interface{}) (int64, error) IsTableEmpty(ctx context.Context, bean interface{}) (bool, error) IsTableExist(ctx context.Context, beanOrTableName interface{}) (bool, error) Iterate(context.Context, interface{}, IterFunc) error Limit(int, ...int) *Session NoAutoCondition(...bool) *Session NotIn(string, ...interface{}) *Session Join(joinOperator string, tablename interface{}, condition string, args ...interface{}) *Session Omit(columns ...string) *Session OrderBy(order string) *Session Ping(ctx context.Context) error Query(ctx context.Context, sqlOrAgrs ...interface{}) (resultsSlice []map[string][]byte, err error) QueryInterface(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]interface{}, error) QueryString(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]string, error) Rows(ctx context.Context, bean interface{}) (*Rows, error) SetExpr(string, string) *Session SQL(interface{}, ...interface{}) *Session Sum(ctx context.Context, bean interface{}, colName string) (float64, error) SumInt(ctx context.Context, bean interface{}, colName string) (int64, error) Sums(ctx context.Context, bean interface{}, colNames ...string) ([]float64, error) SumsInt(ctx context.Context, bean interface{}, colNames ...string) ([]int64, error) Table(tableNameOrBean interface{}) *Session Unscoped() *Session Update(ctx context.Context, bean interface{}, condiBeans ...interface{}) (int64, error) UseBool(...string) *Session Where(interface{}, ...interface{}) *Session }
Interface defines the interface which Engine, EngineGroup and Session will implementate.
type LRUCacher ¶
type LRUCacher struct { MaxElementSize int Expired time.Duration GcInterval time.Duration // contains filtered or unexported fields }
LRUCacher implments cache object facilities
func NewLRUCacher ¶
func NewLRUCacher(store core.CacheStore, maxElementSize int) *LRUCacher
NewLRUCacher creates a cacher
func NewLRUCacher2 ¶
NewLRUCacher2 creates a cache include different params
func (*LRUCacher) ClearBeans ¶
ClearBeans clears all beans in some table
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
}
MemoryStore represents in-memory store
func NewMemoryStore ¶
func NewMemoryStore() *MemoryStore
NewMemoryStore creates a new store in memory
func (*MemoryStore) Get ¶
func (s *MemoryStore) Get(key string) (interface{}, error)
Get gets object from store
func (*MemoryStore) Put ¶
func (s *MemoryStore) Put(key string, value interface{}) error
Put puts object into store
type Option ¶ added in v0.6.4
type Option func(x *Engine)
Option config Engine behavior
func ColumnMapperOption ¶ added in v0.6.4
func ConnMaxLifetimeOption ¶ added in v0.6.4
func DefaultCacherOption ¶ added in v0.6.4
func DisableGlobalCacheOption ¶ added in v0.6.4
func EnableTraceOption ¶ added in v0.6.4
func MapperOption ¶ added in v0.6.4
func MaxIdleConnsOption ¶ added in v0.6.4
func MaxOpenConnsOption ¶ added in v0.6.4
func ShowExecTimeOption ¶ added in v0.6.4
func ShowSQLOption ¶ added in v0.6.4
func TZDatabaseOption ¶ added in v0.6.4
func TZLocationOption ¶ added in v0.6.4
func TableMapperOption ¶ added in v0.6.4
type Rows ¶
type Rows struct { NoTypeCheck bool // contains filtered or unexported fields }
Rows rows wrapper a rows to
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 {
// contains filtered or unexported fields
}
Session keep a pointer to sql.DB and provides all execution of all kind of database operations.
func (*Session) BufferSize ¶ added in v0.6.4
BufferSize sets the buffersize for iterate
func (*Session) Clone ¶ added in v0.5.3
Clone copy all the session's content and return a new session
func (*Session) Conds ¶ added in v0.5.7
Conds returns session query conditions except auto bean conditions
func (*Session) CreateIndexes ¶
CreateIndexes create indexes
func (*Session) CreateTable ¶
CreateTable create a table according a bean
func (*Session) CreateUniques ¶
CreateUniques create uniques
func (*Session) Desc ¶
Desc provide desc order by query condition, the input parameters are columns.
func (*Session) Distinct ¶
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 ¶
DropIndexes drop indexes
func (*Session) DropTable ¶
DropTable drop table will drop table if exist, if drop failed, it will return error
func (*Session) Exec ¶
func (session *Session) Exec(ctx context.Context, sqlStr string, args ...interface{}) (sql.Result, error)
Exec raw sql
func (*Session) Exist ¶ added in v0.6.3
Exist returns true if the record exist otherwise return false
func (*Session) Find ¶
func (session *Session) Find(ctx context.Context, rowsSlicePtr interface{}, condiBean ...interface{}) error
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) InsertMulti ¶
InsertMulti insert multiple records
func (*Session) InsertOne ¶
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
IsTableEmpty if table have any records
func (*Session) IsTableExist ¶ added in v0.4.3
func (session *Session) IsTableExist(ctx context.Context, beanOrTableName interface{}) (bool, error)
IsTableExist if a table is exist
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(joinOperator string, tablename interface{}, condition string, args ...interface{}) *Session
Join join_operator should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
func (*Session) NoAutoCondition ¶ added in v0.4.5
NoAutoCondition disable generate SQL condition from beans
func (*Session) NoAutoTime ¶
NoAutoTime means do not automatically give created field and updated field the current time on the current session temporarily
func (*Session) NoCache ¶
NoCache ask this session do not retrieve data from cache system and get data from database directly.
func (*Session) Nullable ¶ added in v0.4.4
Nullable Set null when column is zero-value and nullable for update
func (*Session) OrderBy ¶
OrderBy provide order by query condition, the input parameter is the content after order by on a sql statement.
func (*Session) PingContext ¶ added in v0.6.4
PingContext test if database is ok
func (*Session) Prepare ¶ added in v0.4.5
Prepare set a flag to session that should be prepare statement before execute query
func (*Session) Query ¶
func (session *Session) Query(ctx context.Context, sqlorArgs ...interface{}) ([]map[string][]byte, error)
Query runs a raw sql and return records as []map[string][]byte
func (*Session) QueryInterface ¶ added in v0.6.4
func (session *Session) QueryInterface(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]interface{}, error)
QueryInterface runs a raw sql and return records as []map[string]interface{}
func (*Session) QueryString ¶ added in v0.6.2
func (session *Session) QueryString(ctx context.Context, sqlorArgs ...interface{}) ([]map[string]string, error)
QueryString runs a raw sql and return records as []map[string]string
func (*Session) Rows ¶
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) SQL ¶ added in v0.5.6
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) SetExpr ¶ added in v0.4.3
SetExpr provides a query string like "column = {expression}"
func (*Session) StoreEngine ¶
StoreEngine is only avialble mysql dialect currently
func (*Session) Sum ¶ added in v0.5.6
func (session *Session) Sum(ctx context.Context, bean interface{}, columnName string) (res float64, err error)
Sum call sum some column. bean's non-empty fields are conditions.
func (*Session) SumInt ¶ added in v0.6.3
func (session *Session) SumInt(ctx context.Context, bean interface{}, columnName string) (res int64, err error)
SumInt call sum some column. bean's non-empty fields are conditions.
func (*Session) Sums ¶ added in v0.5.6
func (session *Session) Sums(ctx context.Context, bean interface{}, columnNames ...string) ([]float64, error)
Sums call sum some columns. bean's non-empty fields are conditions.
func (*Session) SumsInt ¶ added in v0.5.6
func (session *Session) SumsInt(ctx context.Context, bean interface{}, columnNames ...string) ([]int64, error)
SumsInt sum specify columns and return as []int64 instead of []float64
func (*Session) Table ¶
Table can input a string or pointer to struct for special a table to operate.
func (*Session) Update ¶
func (session *Session) Update(ctx context.Context, bean interface{}, condiBean ...interface{}) (int64, error)
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 }
SimpleLogger is the default implment of core.ILogger
func NewSimpleLogger ¶ added in v0.4.1
func NewSimpleLogger(out io.Writer) *SimpleLogger
NewSimpleLogger use a special io.Writer as logger output
func NewSimpleLogger2 ¶ added in v0.4.1
func NewSimpleLogger2(out io.Writer, prefix string, flag int) *SimpleLogger
NewSimpleLogger2 let you customrize your logger prefix and flag
func NewSimpleLogger3 ¶ added in v0.4.1
NewSimpleLogger3 let you customrize your logger prefix and flag and logLevel
func (*SimpleLogger) Debug ¶ added in v0.4.1
func (s *SimpleLogger) Debug(v ...interface{})
Debug implement core.ILogger
func (*SimpleLogger) Debugf ¶ added in v0.4.1
func (s *SimpleLogger) Debugf(format string, v ...interface{})
Debugf implement core.ILogger
func (*SimpleLogger) Error ¶ added in v0.5.3
func (s *SimpleLogger) Error(v ...interface{})
Error implement core.ILogger
func (*SimpleLogger) Errorf ¶ added in v0.5.3
func (s *SimpleLogger) Errorf(format string, v ...interface{})
Errorf implement core.ILogger
func (*SimpleLogger) Info ¶ added in v0.4.1
func (s *SimpleLogger) Info(v ...interface{})
Info implement core.ILogger
func (*SimpleLogger) Infof ¶ added in v0.4.1
func (s *SimpleLogger) Infof(format string, v ...interface{})
Infof implement core.ILogger
func (*SimpleLogger) IsShowSQL ¶ added in v0.5.0
func (s *SimpleLogger) IsShowSQL() bool
IsShowSQL implement core.ILogger
func (*SimpleLogger) Level ¶ added in v0.4.1
func (s *SimpleLogger) Level() core.LogLevel
Level implement core.ILogger
func (*SimpleLogger) SetLevel ¶ added in v0.4.1
func (s *SimpleLogger) SetLevel(l core.LogLevel)
SetLevel implement core.ILogger
func (*SimpleLogger) ShowSQL ¶ added in v0.5.0
func (s *SimpleLogger) ShowSQL(show ...bool)
ShowSQL implement core.ILogger
func (*SimpleLogger) Warn ¶ added in v0.5.3
func (s *SimpleLogger) Warn(v ...interface{})
Warn implement core.ILogger
func (*SimpleLogger) Warnf ¶ added in v0.5.3
func (s *SimpleLogger) Warnf(format string, v ...interface{})
Warnf implement core.ILogger
type Statement ¶
type Statement struct { RefTable *core.Table Engine *Engine Start int LimitN int OrderStr string JoinStr string GroupByStr string HavingStr string ColumnStr string OmitStr string AltTableName string RawSQL string RawParams []interface{} UseCascade bool UseAutoJoin bool StoreEngine string Charset string UseCache bool UseAutoTime bool IsDistinct bool IsForUpdate 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
Asc provide asc order by query condition, the input parameters are columns.
func (*Statement) Decr ¶ added in v0.4.1
Decr Generate "Update ... Set column = column - arg" statement
func (*Statement) ID ¶ added in v0.5.8
ID generate "where id = ? " statement or for composite key "where key1 = ? and key2 = ?"
func (*Statement) Incr ¶ added in v0.4.1
Incr Generate "Update ... Set column = column + arg" statement
func (*Statement) Join ¶
func (statement *Statement) Join(joinOP string, tablename interface{}, condition string, args ...interface{}) *Statement
Join The joinOP should be one of INNER, LEFT OUTER, CROSS etc - this will be prepended to JOIN
func (*Statement) NoAutoCondition ¶ added in v0.4.5
NoAutoCondition if you do not want convert bean's field as query condition, then use this function
func (*Statement) Nullable ¶ added in v0.4.4
Nullable Update use only: update columns to null when value is nullable and zero-value
func (*Statement) SetExpr ¶ added in v0.4.3
SetExpr Generate "Update ... Set column = {expression}" statement
func (*Statement) Table ¶
Table tempororily set table name, the parameter could be a string or a pointer of struct
type SyslogLogger ¶ added in v0.4.1
type SyslogLogger struct {
// contains filtered or unexported fields
}
SyslogLogger will be depricated
func NewSyslogLogger ¶ added in v0.4.1
func NewSyslogLogger(w *syslog.Writer) *SyslogLogger
NewSyslogLogger implements core.ILogger
func (*SyslogLogger) Debug ¶ added in v0.4.1
func (s *SyslogLogger) Debug(v ...interface{})
Debug log content as Debug
func (*SyslogLogger) Debugf ¶ added in v0.4.1
func (s *SyslogLogger) Debugf(format string, v ...interface{})
Debugf log content as Debug and format
func (*SyslogLogger) Error ¶ added in v0.5.3
func (s *SyslogLogger) Error(v ...interface{})
Error log content as Error
func (*SyslogLogger) Errorf ¶ added in v0.5.3
func (s *SyslogLogger) Errorf(format string, v ...interface{})
Errorf log content as Errorf and format
func (*SyslogLogger) Info ¶ added in v0.4.1
func (s *SyslogLogger) Info(v ...interface{})
Info log content as Info
func (*SyslogLogger) Infof ¶ added in v0.4.1
func (s *SyslogLogger) Infof(format string, v ...interface{})
Infof log content as Infof and format
func (*SyslogLogger) IsShowSQL ¶ added in v0.5.0
func (s *SyslogLogger) IsShowSQL() bool
IsShowSQL if logging SQL
func (*SyslogLogger) Level ¶ added in v0.4.1
func (s *SyslogLogger) Level() core.LogLevel
Level shows log level
func (*SyslogLogger) SetLevel ¶ added in v0.4.1
func (s *SyslogLogger) SetLevel(l core.LogLevel)
SetLevel always return error, as current log/syslog package doesn't allow to set priority level after syslog.Writer created
func (*SyslogLogger) ShowSQL ¶ added in v0.5.0
func (s *SyslogLogger) ShowSQL(show ...bool)
ShowSQL set if logging SQL
func (*SyslogLogger) Warn ¶ added in v0.5.3
func (s *SyslogLogger) Warn(v ...interface{})
Warn log content as Warn
func (*SyslogLogger) Warnf ¶ added in v0.5.3
func (s *SyslogLogger) Warnf(format string, v ...interface{})
Warnf log content as Warnf and format
Source Files ¶
- cache_lru.go
- cache_memory_store.go
- context.go
- convert.go
- dialect_mssql.go
- dialect_mysql.go
- dialect_oracle.go
- dialect_postgres.go
- dialect_sqlite3.go
- doc.go
- engine.go
- engine_cond.go
- engine_group.go
- engine_group_policy.go
- engine_maxlife.go
- engine_option.go
- error.go
- helpers.go
- helpler_time.go
- interface.go
- logger.go
- processors.go
- rows.go
- session.go
- session_cols.go
- session_cond.go
- session_convert.go
- session_delete.go
- session_exist.go
- session_find.go
- session_get.go
- session_insert.go
- session_iterate.go
- session_query.go
- session_raw.go
- session_schema.go
- session_stats.go
- session_tx.go
- session_update.go
- statement.go
- syslogger.go
- tag.go
- types.go
- xorm.go