go xormフレームの使用

3699 ワード

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方法:
主に7つの方法と他の支援方法があります。データベースを操作します。
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、1つまたは複数のレコードを更新する:
affected, err := engine.Update(&user)
// UPDATE user SET ...
6:1つまたは複数のレコードを削除するには、削除条件が必要です。
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、Acc、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