go xorm学习

1.方法Update接受的第一个参数必须是指针地址,指向需要更新的内容

2.更新的条件

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



log.Fatalf("err %v",err)  打印错误并中断程序

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

%s %f

初始化对象

ac:=new(Account)

ac.Name = "张三"

ac.Balance = 65

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

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

Exit:

for {

break Exit //退出循环

}

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")

整型---转成字符串

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

}

//获取数量

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

//创建事务并且开启事务

session:=x.NewSession()

defersession.Close()

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

returnnil,err

}

//通过事务执行语句

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

iferr!=nil {

//报错就回滚

session.Rollback()

returnnil,err

}

//没有报错就提交事务

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)

}

//迭代打印名字和余额的值,其他值为默认值

funcGetAcountName()  {

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

}

//打印不包括性别的值,其他值正常打印

funcGetAcountNoSex()  {

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

}

//分页获取数据

funcGetAcountPage(page,sizeint)  {

//取3条从第page*size开始

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)

}

//设置缓存

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()

//分页

//model.GetAcountPage(1,3)

//model.GetAcountName()

model.GetAcountNoSex()

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容