golang xorm框架的使用


1、創建engine

engine, err := xorm.NewEngine(driverName, dataSourceName)

上述代碼創建了一個數據庫引擎,可以在一個程序中創建多個engine。

2、查詢方法:

2.1、支持sql查詢:

  1、查詢一個string類型的sql,返回[]map[string][]byte類型的切片(查詢)

results, err := engine.Query("select * from user")

  2、執行一個string的sql,返回結果影響行數(增刪改)

affected, err := engine.Exec("update user set .... where ...")

2.2、ORM方法:

  主要有七個方法和其他輔助的方法來操作數據庫。

  1、插入一個或者多個數據:

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、從數據庫里面查詢一條記錄:

has, err := engine.Get(&user)
// SELECT * FROM user LIMIT 1

  3、從數據庫中查詢多條記錄:

sliceOfStructs := new(Struct)
err := engine.Find(sliceOfStructs)
// SELECT * FROM user

  4、查詢多條記錄,然后每條記錄進行處理,有兩個方法,一個是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)
}

  5、更新一條或者多條記錄:

affected, err := engine.Update(&user)
// UPDATE user SET ...

  6:刪除一條或者多條記錄,必須存在刪除條件

affected, err := engine.Where(...).Delete(&user)
// DELETE FROM user Where ...

  7、查詢記錄條數:

counts, err := engine.Count(&user)
// SELECT count(*) AS total FROM user

2.3:條件:

  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, 查詢原生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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM