W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
beego ORM 是一個(gè)強(qiáng)大的 Go 語言 ORM 框架。她的靈感主要來自 Django ORM 和 SQLAlchemy。
目前該框架仍處于開發(fā)階段,可能發(fā)生任何導(dǎo)致不兼容的改動(dòng)。
已支持?jǐn)?shù)據(jù)庫驅(qū)動(dòng):
以上數(shù)據(jù)庫驅(qū)動(dòng)均通過基本測試,但我們?nèi)孕枰姆答仭?/p>
ORM 特性:
更多特性請(qǐng)?jiān)谖臋n中自行品讀。
安裝 ORM:
go get github.com/astaxie/beego/orm
package main
import (
"fmt"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql" // import your used driver
)
// Model Struct
type User struct {
Id int
Name string `orm:"size(100)"`
}
func init() {
// set default database
orm.RegisterDataBase("default", "mysql", "username:password@tcp(127.0.0.1:3306)/db_name?charset=utf8", 30)
// register model
orm.RegisterModel(new(User))
// create table
orm.RunSyncdb("default", false, true)
}
func main() {
o := orm.NewOrm()
user := User{Name: "slene"}
// 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)
}
type Post struct {
Id int `orm:"auto"`
Title string `orm:"size(100)"`
User *User `orm:"rel(fk)"`
}
var posts []*Post
qs := o.QueryTable("post")
num, err := qs.Filter("User__Name", "slene").All(&posts)
當(dāng)您無法使用 ORM 來達(dá)到您的需求時(shí),也可以直接使用 SQL 來完成查詢/映射操作。
var maps []orm.Params
num, err := o.Raw("SELECT * FROM user").Values(&maps)
for _,term := range maps{
fmt.Println(term["id"],":",term["name"])
}
o.Begin()
...
user := User{Name: "slene"}
id, err := o.Insert(&user)
if err == nil {
o.Commit()
} else {
o.Rollback()
}
在開發(fā)環(huán)境下,您可以使用以下指令來開啟查詢調(diào)試模式:
func main() {
orm.Debug = true
...
開啟后將會(huì)輸出所有查詢語句,包括執(zhí)行、準(zhǔn)備、事務(wù)等。
例如:
[ORM] - 2013-08-09 13:18:16 - [Queries/default] - [ db.Exec / 0.4ms] - [INSERT INTO `user` (`name`) VALUES (?)] - `slene`
...
注意:我們不建議您在部署產(chǎn)品后這樣做。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: