go xorm學(xué)習(xí)

1.方法Update接受的第一個(gè)參數(shù)必須是指針地址,指向需要更新的內(nèi)容

2.更新的條件

_,err=x.Cols("data","code_type").Update(cd,&Code{Phone:phone})



log.Fatalf("err %v",err)? 打印錯(cuò)誤并中斷程序

fmt.Scanf("%d\n",&num)

%s %f

初始化對(duì)象

ac:=new(Account)

ac.Name = "張三"

ac.Balance = 65

ad :=&Account{Name:"李四",Balance:68}

_,err:=x.Insert(ac,ad)

Exit:

for {

break Exit //退出循環(huán)

}

fmt.Printf("%s%v\n",a.Name,a.Balance)

fmt.Printf("%#v",a) //打印全部信息

李四68

&model.Account{Id:2, Name:"李四", Balance:68, Verson:1}

//初始化異常

return nil,errors.New("acctoun not found")

整型---轉(zhuǎn)成字符串

fmt.Sprintf("%d",i*11111)

%v\n






packagemodel

import(

_"github.com/go-xorm/xorm"

_"github.com/go-sql-driver/mysql"

"github.com/go-xorm/xorm"

"log"

"errors"

"fmt"

"os"

)

//迭代

varprint =func(idxint,beaninterface{})error{

fmt.Printf("%d==%#v\n",idx,bean.(*Account))

returnnil

}

typeAccountstruct{

Idint64

Namestring

Balancefloat64

Sexint64

Versonint`xorm:"version"`

CardIdstring`xorm:"unique"`

}

varx *xorm.Engine

funcinit() {

varerrerror

x,err = xorm.NewEngine("mysql","root:@/mygoweb?charset=utf8")

iferr!=nil {

log.Fatalf("err %v",err)

}

iferr=x.Sync(new(Account));err!=nil {

log.Fatalf("err %v",err)

}

}

//增加

funcNewAccount()error{

ac:=new(Account)

ac.Name ="張三"

ac.Balance =65

ad :=&Account{Name:"李四",Balance:68}

_,err:=x.Insert(ac,ad)

returnerr

}

funcNewAccount2(sizeint64)error{

count:=GetAccountsCouont()

fori:=count;i

if_,err:=x.Insert(&Account{Name:fmt.Sprintf("王五%d",i),Balance:float64(i)*100,CardId:fmt.Sprintf("%d",i*11111)});err!=nil {

returnerr

}

}

returnnil

}

//查詢

funcGetAccount(idint64)? (*Account,error){

a:=&Account{}

has,err:=x.Id(id).Get(a)

iferr!=nil {

returnnil,err

}else if!has {

returnnil,errors.New("acctoun not found")

}

returna,nil

}

//查詢更多 切記一定要傳入 &as

funcGetAccounts()? (as []*Account,errerror){

err=x.Asc("id").Find(&as)

returnas,err

}

//獲取數(shù)量

funcGetAccountsCouont()? (int64){

count,_:=x.Count(new(Account))

//count,_:=x.Where("id>10").Count(new(Account))

returncount

}

//更新

funcSaveMoney(idint64,monefloat64)? (*Account,error)? {

a,err:=GetAccount(id)

iferr!=nil {

returnnil,err

}

a.Balance+=mone

//_,err=x.Update(a)

_,err=x.Cols("balance").Update(a) ?

iferr!=nil {

returnnil,err

}

returna,nil

}

//更新

funcGetMoney(idint64,monefloat64)? (*Account,error)? {

a,err:=GetAccount(id)

iferr!=nil {

returnnil,err

}

ifa.Balance<=mone {

returnnil,errors.New("money not enthrog")

}

a.Balance -= mone

_,err=x.Cols("balance").Update(a)

iferr!=nil {

returnnil,err

}

returna,nil

}

//安全性

funcGetMoney2(idint64,monefloat64)? (*Account,error)? {

a,err:=GetAccount(id)

iferr!=nil {

returnnil,err

}

ifa.Balance<=mone {

returnnil,errors.New("money not enthrog")

}

a.Balance -= mone

//創(chuàng)建事務(wù)并且開(kāi)啟事務(wù)

session:=x.NewSession()

defersession.Close()

iferr =session.Begin();err!=nil {

returnnil,err

}

//通過(guò)事務(wù)執(zhí)行語(yǔ)句

_,err=session.Cols("balance").Update(a)

iferr!=nil {

//報(bào)錯(cuò)就回滾

session.Rollback()

returnnil,err

}

//沒(méi)有報(bào)錯(cuò)就提交事務(wù)

session.Commit()

returna,nil

}

funcUpdateSex(ac *Account)? (*Account,error)? {

_,err:=x.Cols("sex").Update(ac)

iferr!=nil {

returnnil,err

}

returnac,nil

}

funcDeleteAccount(idint64)? (errerror)? {

_,err=x.Delete(&Account{Id:id})

returnerr

}

//迭代

funcPrintAcount()? {

x.Iterate(new(Account),print)

}

//迭代打印名字和余額的值皿伺,其他值為默認(rèn)值

funcGetAcountName()? {

x.Cols("name","balance").Iterate(new(Account),print)

}

//打印不包括性別的值循衰,其他值正常打印

funcGetAcountNoSex()? {

x.Omit("sex").Iterate(new(Account),print)

}

//分頁(yè)獲取數(shù)據(jù)

funcGetAcountPage(page,sizeint)? {

//取3條從第page*size開(kāi)始

page-=1

x.Limit(size,page*size).Iterate(new(Account),print)

}

//日志功能

funcLogSql() {

//f,err:=os.OpenFile("sql.log",os.O_CREATE|os.ModeAppend,"")

f,err := os.Create("sql.log")

iferr != nil {

log.Fatalf("%v",err)

}

x.SetLogger(xorm.NewSimpleLogger(f))

x.ShowSQL(true)

}

//設(shè)置緩存

funcSetCache(){

cacher := xorm.NewLRUCacher(xorm.NewMemoryStore(),1000)

x.SetDefaultCacher(cacher)

}



packagemain

import(

"xormapp/model"

"log"

"fmt"

)

funcmain() {

er:= model.NewAccount2(10)

ifer!=nil {

log.Fatalf("err=%v",er)

}

a,err:=model.GetAccount(2)

iferr!=nil {

log.Fatalf("err=%v",err)

}

fmt.Printf("%s%v\n",a.Name,a.Balance)

fmt.Printf("%#v\n",a)

//a,err=model.GetMoney(1,50.25)

//if err!=nil {

// log.Fatalf("err=%v",err)

//}

//fmt.Printf("%#v",a)

//as,err:=model.GetAccounts()

//if err!=nil {

// log.Fatalf("err=%v",err)

//}

//for _,a:=range as {

// a.Sex =1

// model.UpdateSex(a)

// fmt.Printf("%#v",a)

//}

//err= model.DeleteAccount(1)

//if err!=nil {

// log.Fatalf("err=%v",err)

//}

//model.PrintAcount()

//分頁(yè)

//model.GetAcountPage(1,3)

//model.GetAcountName()

model.GetAcountNoSex()

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末筝尾,一起剝皮案震驚了整個(gè)濱河市恢筝,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌母市,老刑警劉巖耍属,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件托嚣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡厚骗,警方通過(guò)查閱死者的電腦和手機(jī)示启,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)领舰,“玉大人夫嗓,你說(shuō)我怎么就攤上這事〕寤啵” “怎么了舍咖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锉桑。 經(jīng)常有香客問(wèn)我排霉,道長(zhǎng),這世上最難降的妖魔是什么民轴? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任攻柠,我火速辦了婚禮,結(jié)果婚禮上后裸,老公的妹妹穿的比我還像新娘瑰钮。我一直安慰自己,他們只是感情好微驶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布飞涂。 她就那樣靜靜地躺著,像睡著了一般祈搜。 火紅的嫁衣襯著肌膚如雪较店。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,760評(píng)論 1 289
  • 那天容燕,我揣著相機(jī)與錄音梁呈,去河邊找鬼。 笑死蘸秘,一個(gè)胖子當(dāng)著我的面吹牛官卡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播醋虏,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼寻咒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了颈嚼?” 一聲冷哼從身側(cè)響起毛秘,我...
    開(kāi)封第一講書(shū)人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阻课,沒(méi)想到半個(gè)月后叫挟,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡限煞,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年抹恳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片署驻。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡奋献,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出旺上,到底是詐尸還是另有隱情瓶蚂,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布抚官,位于F島的核電站扬跋,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏凌节。R本人自食惡果不足惜钦听,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倍奢。 院中可真熱鬧朴上,春花似錦、人聲如沸卒煞。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至衣撬,卻和暖如春乖订,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背具练。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工乍构, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人扛点。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓哥遮,卻偏偏與公主長(zhǎng)得像盯捌,于是被迫代替她去往敵國(guó)和親镜悉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容