您好,登錄后才能下訂單哦!
//package main
//
//import (
// _ "myproject/routers"
// "github.com/astaxie/beego"
// "github.com/astaxie/beego/orm"
// "fmt"
//)
//
//func main() {
// //beego.SetStaticPath("/down1","download1") ,自定義設(shè)置多個(gè)靜態(tài)文件處理目錄
// beego.Run()
//}
// 上面是入門的案例, 下面是beego框架中orm的使用
package main
import (
_ "myproject/routers"
"github.com/astaxie/beego"
"github.com/astaxie/beego/orm"
"fmt"
)
type User struct{
Id int
Name string `orm:"size(100)"`
}
type Post struct{
Id int `orm:"auto"`
Title string `orm:"size(100)"`
User *User `orm:"rel(fk)"`
}
func init(){
// set default dabase
orm.RegisterDataBase("default","mysql", "root:mysql@tcp(127.0.0.1)/golang_db01?charset=utf8", 30)
//register model
orm.RegisterModel(new(User))
//創(chuàng)建table
orm.RunSyncdb("default", false, true)
}
func main() {
//beego.SetStaticPath("/down1","download1") ,自定義設(shè)置多個(gè)靜態(tài)文件處理目錄
// 五,調(diào)試查詢?nèi)罩?/p>
//開發(fā)環(huán)境中,輸出日志
// [ORM] - 2013-08-09 13:18:16 - [Queries/default] - [ db.Exec / 0.4ms] - [INSERT INTO `user` (`name`) VALUES (?)] - `slene`
orm.Debug = true
o := orm.NewOrm()
user := User{Name:"slence"}
//一,通過orm進(jìn)行增刪改查
//insert
id, err := o.Insert(&user)
fmt.Printf("ID:%d, ERR: %v\n", id, err)
//update
user.Name = "astaxie"
num, err := o.Update(&user)
fmt.Printf("NUM:%d, ERR:%v\n", num, err)
//read one
u := User{Id:user.Id}
err = o.Read(&u)
fmt.Printf("ERR:%v\n", err)
//delete
num, err = o.Delete(&u)
fmt.Printf("NUM:%d, ERR:%v\n", num, err)
// 二,關(guān)聯(lián)查詢,主要還是在于Post的結(jié)構(gòu)體中User字段定義了外鍵關(guān)聯(lián)
var posts []*Post
qs := o.QueryTable("post")
num, err = qs.Filter("User_name", "slence").All(&posts)//不用:=是因?yàn)樯厦嬉庖娪衝um了,此處僅僅是修改
fmt.Printf("NUM:%d, ERR:%v\n", num, err)
// 三,使用原生的SQL語(yǔ)句進(jìn)行查詢
var maps []orm.Params
num, err= o.Raw("SELECT * FROM user").Values(&maps)
fmt.Printf("NUM:%d, ERR:%v\n", num, err)
for _, term := range maps{
fmt.Println(term["id"], ":", term["name"])
}
//四,事務(wù)的處理
//o.Begin
//。。。。
//o := NewOrm()
//user := User{Name:"slence"}
//id, err := o.Insert(&user)
//if err == nil{
// o.Commit()
//}else{
// o.Rollback()
//}
beego.Run()
}
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。