go語言orm框架 xorm

2021-08-20 00:26:52 字數 3716 閱讀 9038

使用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

main()

使用xorm基本操作

安裝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...