beego


            beego使用orm包操作數據庫

1、Model的設置

1 //聲明一個結構體,用於映射數據庫表
2 type Person struct { 3     Id int
4     Name string `orm:"size(100)"` 5     Age int
6 }

 

 

2、數據庫的設置

RegisterDrive

1 // 參數1 driverName 2 // 參數2 數據庫類型 3 // 這個用來設置 driverName 對應的數據庫類型 4 // mysql / sqlite3 / postgres 這三種是默認已經注冊過的,所以可以無需設置
5 orm.RegisterDriver("mysql", orm.DRMySQL)

RegisterDataBase

ORM 必須注冊一個別名為 default 的數據庫,作為默認使用。

 1 // 參數1 數據庫的別名,用來在 ORM 中切換數據庫使用  2 // 參數2 driverName  3 // 參數3 對應的鏈接字符串
 4 orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8")  5 
 6 // 參數4(可選) 設置最大空閑連接  7 // 參數5(可選) 設置最大數據庫連接 (go >= 1.2)
 8 maxIdle := 30
 9 maxConn := 30
10 orm.RegisterDataBase("default", "mysql", "root:root@/orm_test?charset=utf8", maxIdle, maxConn)

 

SetMaxIdleConns

根據數據庫的別名,設置數據庫的最大空閑連接

orm.SetMaxIdleConns("default", 30)

 

SetMaxOpenConns

根據數據庫的別名,設置數據庫的最大數據庫連接 (go >= 1.2)

orm.SetMaxOpenConns("default", 30)

 

注冊模型

如果使用 orm.QuerySeter 進行高級查詢的話,這個是必須的。

package main import "github.com/astaxie/beego/orm" type User struct { Id int Name string } func init(){ orm.RegisterModel(new(User)) }

 

RegisterModel 也可以同時注冊多個 model

orm.RegisterModel(new(User), new(Profile), new(Post))

 

RegisterModelWithPrefix

使用表名前綴

orm.RegisterModelWithPrefix("prefix_", new(User))

 

beego設置自動創建表

1    //參數1 使用默認的數據庫 2     //參數2 為true如果當前語句發送錯誤,則執行下一條語句 3     //參數3 為true表示打印建表和sql執行的信息
4     orm.RunSyncdb("default",false,true)

 

 

調試模式打印查詢語句

1 orm.Debug = true

 

 

3、ORM 接口使用

 1 //查詢操作
 2 func read(){  3     o := orm.NewOrm()  4     person := Person{Id:2}  5     err := o.Read(&person)  6     if err != nil {  7         fmt.Println("err=",err)  8  }  9     logs.Info("查詢成功") 10 } 11 
12 //插入操作
13 func insert(){ 14     o := orm.NewOrm() 15     person := Person{Name:"朝陽",Age:19} 16     _,err := o.Insert(&person) 17     if err != nil { 18         fmt.Println("插入失敗") 19         fmt.Println("err=",err) 20  } 21 } 22 
23 //更新操作
24 func update(){ 25     o := orm.NewOrm() 26     person := Person{Id:3,Name:"baihu",Age:20} 27     _,err := o.Update(&person) 28     if err != nil { 29         fmt.Println("err=",err) 30  } 31     fmt.Println("更新成功") 32 
33 } 34 
35 //刪除操作
36 func delete(){ 37     o := orm.NewOrm() 38     person := Person{Id:3} 39     n,err := o.Delete(&person) 40     if err != nil { 41         fmt.Println("err=",err) 42  } 43     fmt.Printf("成功刪除%d條記錄",n) 44 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM