一、建立enginesql
engine, err := xorm.NewEngine(driverName, dataSourceName)
上述代碼建立了一個數據庫引擎,能夠在一個程序中建立多個engine。數據庫
二、查詢方法:spa
2.一、支持sql查詢:code
一、查詢一個string類型的sql,返回[]map[string][]byte類型的切片(查詢)orm
results, err := engine.Query("select * from user")
二、執行一個string的sql,返回結果影響行數(增刪改)blog
affected, err := engine.Exec("update user set .... where ...")
2.二、ORM方法:string
主要有七個方法和其餘輔助的方法來操做數據庫。it
一、插入一個或者多個數據:table
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 (),(),()
二、從數據庫裏面查詢一條記錄:class
has, err := engine.Get(&user) // SELECT * FROM user LIMIT 1
三、從數據庫中查詢多條記錄:
sliceOfStructs := new(Struct) err := engine.Find(sliceOfStructs) // SELECT * FROM user
四、查詢多條記錄,而後每條記錄進行處理,有兩個方法,一個是iterator,另外一個是raw:
err := engine.Iterate(...) // SELECT * FROM user raws, err := engine.Raws(...) // SELECT * FROM user bean := new(Struct) for raws.Next() { err = raws.Scan(bean) }
五、更新一條或者多條記錄:
affected, err := engine.Update(&user) // UPDATE user SET ...
6:刪除一條或者多條記錄,必須存在刪除條件
affected, err := engine.Where(...).Delete(&user) // DELETE FROM user Where ...
七、查詢記錄條數:
counts, err := engine.Count(&user) // SELECT count(*) AS total FROM user
2.3:條件:
一、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)
二、 Where, And, Or
engine.Where().And().Or().Find() // SELECT * FROM user WHERE (.. AND ..) OR ...
三、OrderBy, Asc, Desc
engine.Asc().Desc().Find() // SELECT * FROM user ORDER BY .. ASC, .. DESC engine.OrderBy().Find() // SELECT * FROM user ORDER BY ..
四、 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
五、Sql, 查詢原生SQL
engine.Sql("select * from user").Find()
六、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
七、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