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