xorm使用小結

一.xorm簡介

http://www.xorm.io/docs/(文檔地址)

xorm是一個簡單而強大的Go語言ORM庫. 通過它可以使數據庫操作非常簡便。xorm的目標並不是讓你完全不去學習SQL,我們認爲SQL並不會爲ORM所替代,但是ORM將可以解決絕大部分的簡單SQL需求。xorm支持兩種風格的混用。


二.使用小結

1.連接 


func newXorm()  { 
   engine, _ = xorm.NewEngine("mysql", "數據庫名稱:數據庫連接密碼@(數據庫地址:3306)/數據庫實例名稱?charset=utf8")
   tbMapper := core.NewPrefixMapper(core.SnakeMapper{}, "prefix_")
   engine.SetTableMapper(tbMapper)
}
2.建表
以config表爲例
config表字段爲:id,varname,value...

type Config struct {
   Id      int
   Varname string
   Value   string
}


在定義結構體時字段名必須爲大寫,否則報錯

若config表結構中無Id作爲自增主鍵,則可以通過 `orm:"pk"`來定義

3.CURD

(1)查詢

newXorm()
var config []Config
sql := "SELECT `varname`,`value` FROM `onfig`"
engine.Sql(sql).Find(&config)


得到的config是一個結構數據

data,_ := engine.QueryString("SELECT `varname`,`value` FROM `config`")


得到的是一個[]map[string][string]類型的

newXorm()
var ret Config
engine.Where("id= ?", id).Get(&ret)
return ret.Value


也可以通過其他的方法查詢

var ret Config
ret.Id = id
has,_ := engine.Get(&ret)



(2)更新

newXorm()
var ret Config
ret.Varname= varname
_,err := engine.Update(&ret, &Config{Id:id)


官方文檔中有一種方法是將。Id(id)放在前面,測試了一下報錯,主鍵衝突。
newXorm()
var ret Config
ret.Value = value
engine.Cols("value").Update(&ret,Config{Id:id})



使用上述方法將需要更新的列寫在Clos中,是因爲 value有可能爲0,此時直接用第一種方法是不生效的
若需要更新的值爲0或nil將會不做更新

(3)添加


var data Config
data.Varname = varname
data.Value = value
newXorm()
_,err := engine.Insert(&data)


(4)刪除

newXorm()
var ret Config
engine.Id(id).Delete(&ret)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章