使用sql運算元據庫
安裝mysql驅動:go get github.com/go-sql-driver/mysql
//因為每次查詢出來的列是不定長的,用len(column)定住當次查詢的長度
fori:=
range
values
results:=make(map[int]map[string]string)
//最後得到的map
i:=0
forquery.next()
row:=make(map[string]string)
//每行資料
fork,v:=
range
values
results[i]=row//裝入結果集中
i++
}
fork,v:=
range
results
}
func使用xorm基本操作main()
安裝xorm框架 go get github.com/go-xorm/cmd/xorm
//插入資料
engine.insert(&p)
//查詢id為1的資料
p1:=person{}
engine.id(1).get(&p1)
fmt.println(p1)
//查詢name為yuanye的資料
p2:=person{}
engine.where("name=?",
"yuanye").get(&p2)
fmt.println(p2)
//根據user結構體中已有的非空資料來檢視資料是否存在
p3:=&person
has,_:=engine.get(p3)
fmt.println(has)
//根據條件統計數量
p4:=new(person)
total,_:=engine.where("name=?",
"yuanye").count(p4)
fmt.println(total)
//修改name為「yy」
p5:=person
engine.id(1).update(&p5)
//find用於查詢多條資料,可以傳入切片、map位址,也可以使用where新增條件
p6:=make(person,
0)
engine.find(&p6)
fmt.println(p6)
//刪除id=1的記錄
p7:=person{}
engine.id(1).delete(&p7)
has,_=engine.id(1).get(&p7)
fmt.println(has)
}資料庫列屬性定義:
具體的tag規則如下,另tag中的關鍵字均不區分大小寫,但欄位名根據不同的資料庫是區分大小寫
name
當前field對應的字段的名稱,可選,如不寫,則自動根據field名字和轉換規則命名,如與其它關鍵字衝突,請使用單引號括起來。
pk是否是primary key,如果在乙個struct中有多個欄位都使用了此標記,則這多個字段構成了復合主鍵,單主鍵當前支援int32,int,int64,uint32,uint,uint64,string這7種go的資料型別,復合主鍵支援這7種go的資料型別的組合。
當前支援30多種字段型別,詳情參見本文最後乙個**
字段型別
autoincr
是否是自增
[not ]null 或 notnull
是否可以為空
unique或unique(uniquename)
是否是唯一,如不加括號則該字段不允許重複;如加上括號,則括號中為聯合唯一索引的名字,此時如果有另外乙個或多個欄位和本unique的uniquename相同,則這些uniquename相同的字段組成聯合唯一索引
index或index(indexname)
是否是索引,如不加括號則該字段自身為索引,如加上括號,則括號中為聯合索引的名字,此時如果有另外乙個或多個欄位和本index的indexname相同,則這些indexname相同的字段組成聯合索引
extends
應用於乙個匿名成員結構體或者非匿名成員結構體之上,表示此結構體的所有成員也對映到資料庫中,不過extends只載入一級深度
-這個field將不進行字段對映
->
這個field將只寫入到資料庫而不從資料庫讀取
<-
這個field將只從資料庫讀取,而不寫入到資料庫
created
這個field將在insert時自動賦值為當前時間
updated
這個field將在insert或update時自動賦值為當前時間
deleted
這個field將在delete時設定為當前時間,並且當前記錄不刪除
version
這個field將會在insert時預設為1,每次更新自動加1
default 0
設定預設值,緊跟的內容如果是varchar等需要加上單引號
xorm文件:
mysql連線 xorm 建立Orm引擎
建立orm引擎 在xorm裡面,可以同時存在多個orm引擎,乙個orm引擎稱為engine,乙個engine一般只對應乙個資料庫。engine通過呼叫 xorm.newengine 生成,如 一般情況下如果只操作乙個資料庫,只需要建立乙個 engine 即可。engine 是gorutine安全的。...
ORM框架試驗
public class orm 新增方法 public int add t obj columnnames columns 0 columnname 列名列表 值的列表 values common.getdbvalue columns 0 columntype,convert.tostring p...
基於XORM框架實現分表
最近在維護公司專案過程中,學習了很多後端的東西,包括go語言以及資料庫的操作。同時站在全域性的角度去體會了高額資料量情況下後端的應對策略,為今後在前端方面如何配合後端處理高併發提供了參考。技術背景 xorm xorm是乙個簡單而強大的go語言orm庫.通過它可以使資料庫操作非常簡便。可以簡單理解成g...