peter zhang 10ee2e0dad vendor: update xorm version for fix git clone error build with golang 1.8.1 (#4460) | 7 роки тому | |
---|---|---|
.. | ||
CONTRIBUTING.md | 7 роки тому | |
LICENSE | 7 роки тому | |
README.md | 7 роки тому | |
README_CN.md | 7 роки тому | |
circle.yml | 7 роки тому | |
convert.go | 7 роки тому | |
dialect_mssql.go | 7 роки тому | |
dialect_mysql.go | 7 роки тому | |
dialect_oracle.go | 7 роки тому | |
dialect_postgres.go | 7 роки тому | |
dialect_sqlite3.go | 7 роки тому | |
doc.go | 7 роки тому | |
engine.go | 7 роки тому | |
error.go | 7 роки тому | |
gen_reserved.sh | 7 роки тому | |
helpers.go | 7 роки тому | |
logger.go | 7 роки тому | |
lru_cacher.go | 7 роки тому | |
memory_store.go | 7 роки тому | |
pg_reserved.txt | 7 роки тому | |
processors.go | 7 роки тому | |
rows.go | 7 роки тому | |
session.go | 7 роки тому | |
session_cols.go | 7 роки тому | |
session_cond.go | 7 роки тому | |
session_convert.go | 7 роки тому | |
session_delete.go | 7 роки тому | |
session_find.go | 7 роки тому | |
session_get.go | 7 роки тому | |
session_insert.go | 7 роки тому | |
session_iterate.go | 7 роки тому | |
session_raw.go | 7 роки тому | |
session_schema.go | 7 роки тому | |
session_sum.go | 7 роки тому | |
session_tx.go | 7 роки тому | |
session_update.go | 7 роки тому | |
statement.go | 7 роки тому | |
syslogger.go | 7 роки тому | |
tag.go | 7 роки тому | |
types.go | 7 роки тому | |
xorm.go | 7 роки тому |
Xorm is a simple and powerful ORM for Go.
The last master version is not backwards compatible. You should use engine.ShowSQL()
and engine.Logger().SetLevel()
instead of engine.ShowSQL =
, engine.ShowInfo =
and so on.
Struct <-> Table Mapping Support
Chainable APIs
Transaction Support
Both ORM and raw SQL operation Support
Sync database schema Support
Query Cache speed up
Database Reverse support, See Xorm Tool README
Simple cascade loading support
Optimistic Locking support
SQL Builder support via github.com/go-xorm/builder
Drivers for Go's sql package which currently support database/sql includes:
MyMysql: github.com/ziutek/mymysql/godrv
Postgres: github.com/lib/pq
Tidb: github.com/pingcap/tidb
SQLite: github.com/mattn/go-sqlite3
Oracle: github.com/mattn/go-oci8 (experiment)
v0.6.2
v0.6.0
Where
, And
, Or
methods can use builder.Cond
as parameterv0.5.0
v0.4.5
v0.4.4
go get github.com/go-xorm/xorm
engine, err := xorm.NewEngine(driverName, dataSourceName)
type User struct {
Id int64
Name string
Salt string
Age int
Passwd string `xorm:"varchar(200)"`
Created time.Time `xorm:"created"`
Updated time.Time `xorm:"updated"`
}
err := engine.Sync2(new(User))
Query
runs a SQL string, the returned results is []map[string][]byte
, QueryString
returns []map[string]string
.results, err := engine.Query("select * from user")
results, err := engine.QueryString("select * from user")
Execute
runs a SQL string, it returns affetcted
and error
affected, err := engine.Exec("update user set age = ? where name = ?", age, name)
Insert
one or multiple records to databaseaffected, err := engine.Insert(&user)
// INSERT INTO struct () values ()
affected, err := engine.Insert(&user1, &user2)
// INSERT INTO struct1 () values ()
// INSERT INTO struct2 () values ()
affected, err := engine.Insert(&users)
// INSERT INTO struct () values (),(),()
affected, err := engine.Insert(&user1, &users)
// INSERT INTO struct1 () values ()
// INSERT INTO struct2 () values (),(),()
has, err := engine.Get(&user)
// SELECT * FROM user LIMIT 1
has, err := engine.Where("name = ?", name).Desc("id").Get(&user)
// SELECT * FROM user WHERE name = ? ORDER BY id DESC LIMIT 1
var name string
has, err := engine.Where("id = ?", id).Cols("name").Get(&name)
// SELECT name FROM user WHERE id = ?
var id int64
has, err := engine.Where("name = ?", name).Cols("id").Get(&id)
// SELECT id FROM user WHERE name = ?
var valuesMap = make(map[string]string)
has, err := engine.Where("id = ?", id).Get(&valuesMap)
// SELECT * FROM user WHERE id = ?
var valuesSlice = make([]interface{}, len(cols))
has, err := engine.Where("id = ?", id).Cols(cols...).Get(&valuesSlice)
// SELECT col1, col2, col3 FROM user WHERE id = ?
var users []User
err := engine.Where("name = ?", name).And("age > 10").Limit(10, 0).Find(&users)
// SELECT * FROM user WHERE name = ? AND age > 10 limit 0 offset 10
type Detail struct {
Id int64
UserId int64 `xorm:"index"`
}
type UserDetail struct {
User `xorm:"extends"`
Detail `xorm:"extends"`
}
var users []UserDetail
err := engine.Table("user").Select("user.*, detail.*")
Join("INNER", "detail", "detail.user_id = user.id").
Where("user.name = ?", name).Limit(10, 0).
Find(&users)
// SELECT user.*, detail.* FROM user INNER JOIN detail WHERE user.name = ? limit 0 offset 10
err := engine.Iterate(&User{Name:name}, func(idx int, bean interface{}) error {
user := bean.(*User)
return nil
})
// SELECT * FROM user
rows, err := engine.Rows(&User{Name:name})
// SELECT * FROM user
defer rows.Close()
bean := new(Struct)
for rows.Next() {
err = rows.Scan(bean)
}
affected, err := engine.Id(1).Update(&user)
// UPDATE user SET ... Where id = ?
affected, err := engine.Update(&user, &User{Name:name})
// UPDATE user SET ... Where name = ?
var ids = []int64{1, 2, 3}
affected, err := engine.In("id", ids).Update(&user)
// UPDATE user SET ... Where id IN (?, ?, ?)
// force update indicated columns by Cols
affected, err := engine.Id(1).Cols("age").Update(&User{Name:name, Age: 12})
// UPDATE user SET age = ?, updated=? Where id = ?
// force NOT update indicated columns by Omit
affected, err := engine.Id(1).Omit("name").Update(&User{Name:name, Age: 12})
// UPDATE user SET age = ?, updated=? Where id = ?
affected, err := engine.Id(1).AllCols().Update(&user)
// UPDATE user SET name=?,age=?,salt=?,passwd=?,updated=? Where id = ?
affected, err := engine.Where(...).Delete(&user)
// DELETE FROM user Where ...
affected, err := engine.Id(2).Delete(&user)
counts, err := engine.Count(&user)
// SELECT count(*) AS total FROM user
err := engine.Where(builder.NotIn("a", 1, 2).And(builder.In("b", "c", "d", "e"))).Find(&users)
// SELECT id, name ... FROM user WHERE a NOT IN (?, ?) AND b IN (?, ?, ?)
Please visit Xorm on Google Groups
If you want to pull request, please see CONTRIBUTING
BSD License http://creativecommons.org/licenses/BSD/