[Go][ORM]Beego

小黑-avatar-img
發佈於後端
更新於 發佈於 閱讀時間約 4 分鐘

支援Go所有的類型儲存,且可以用原生SQL敘述與跨資料庫查詢。


映射關係

  • table->struct
  • record->object
  • field->attribute


安裝

go get github.com/astaxie/beego/orm​
go get github.com/go-sql-driver/mysql


使用

連線

orm.RegisterDataBase("default", "mysql", "root:root@/xxx?charset=utf8")
orm.SetMaxIdleConns("default", 10)
orm.SetMaxOpenConns("default", 100)

SetMaxIdleConns:閒置時最大連接數。

SetMaxOpenConns:最大連接數。


結構

type BeegoUser struct {
Id int
Name string
Phone string
}


註冊

orm.RegisterModel(new(BeegoUser))


設定前綴

orm.RegisterModelWithPrefix("xxx", new(BeegoUser))


插入

o := orm.NewOrm()
o.Using("xxx")
user := new(BeegoUser)
user.Name = "xxx"
user.Phone = "0987654321"
fmt.Println(o.Insert(user))


查詢

user := BeegoUser{}
user.Id = 6
// sql: select * from beego_user where id = 6
err := o.Read(&user)
if err == orm.ErrNoRows {
fmt.Println("none")
} else if err == orm.ErrMissPK {
fmt.Println("no key")
} else {
fmt.Println(user.Id, user.Name)
}


更新

user := BeegoUser{}
user.Id = 6
user.Name = "James"
num, err := o.Update(&user)
if err != nil {
fmt.Println("error")
} else {
fmt.Println("更新資料影響的行數:", num)
}


刪除

user := BeegoUser{}
user.Id = 7
if num, err := o.Delete(&user); err != nil {
fmt.Println("error")
} else {
fmt.Println("刪除資料影響的行數:", num)
}


原生SQL

o := orm.NewOrm()
var r orm.RawSeter
r = o.Raw("UPDATE user SET name = ? WHERE name = ?", "jack", "tom")


交易處理

o.Begin()
user1 := BeegoUser{}
user1.Id = 6
user1.Name = "James"

user2 := BeegoUser{}
user2.Id = 12
user2.Name = "Wade"

_, err1 := o.Update(&user1)
_, err2 := o.Insert(&user2)
if err1 != nil || err2 != nil {
o.Rollback()
} else {
o.Commit()
}


avatar-img
8會員
123內容數
嗨,我是一名程式設計師,會在這分享開發與學習紀錄。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
小黑與程式的邂逅 的其他內容
Gorm是一款性能極好的ORM,且友善,因此可以明顯的提高開發效率。 特點 全功能ORM 支持連結 支援Hook 支持預先載入 支援交易 支持復合主鍵 支持SQL生成器 支援資料庫自動遷移 支援自訂日誌 可擴充性 所有功能都被測試覆蓋 安裝 go get -u gor
MacOS 先下載Homebrew,然後輸入底下指令: brew install go 確認是否安裝完成 go version 環境設定 export GOPATH=$HOME/go
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func Get(url string) (result string, err error) { resp, err1 := http.Get(url) if
package main import "fmt" func randGenerator() chan int { ch := make(chan int) go func() { for { //select會嘗試執行各個case,如果都可以執行,那麼隨機選一個執行 se
Gorm是一款性能極好的ORM,且友善,因此可以明顯的提高開發效率。 特點 全功能ORM 支持連結 支援Hook 支持預先載入 支援交易 支持復合主鍵 支持SQL生成器 支援資料庫自動遷移 支援自訂日誌 可擴充性 所有功能都被測試覆蓋 安裝 go get -u gor
MacOS 先下載Homebrew,然後輸入底下指令: brew install go 確認是否安裝完成 go version 環境設定 export GOPATH=$HOME/go
Docker-Compose負責對container做快速編排。設定檔預設名稱為docker-compose.yml,在檔案中,可以透過COMPOSE_FILE或-f對設定進行定義。 想要將專案透過Docker-Compose部署,需要創建docker-compose.yml和Dockerfile
授權碼模式連線流程 用戶端請求自己的伺服器。 伺服器發現用戶沒登入,就導向認證伺服器。 認證伺服器顯示授權頁面,等待用戶授權。 用戶確認授權後,授權頁面會向認證伺服器請求授權碼。 用戶獲取授權碼。 用戶將授權碼傳給伺服器。 伺服器拿授權碼向認證伺服器取得token。 應用註冊
package main import ( "fmt" "io" "net/http" "os" "strconv" ) func Get(url string) (result string, err error) { resp, err1 := http.Get(url) if
package main import "fmt" func randGenerator() chan int { ch := make(chan int) go func() { for { //select會嘗試執行各個case,如果都可以執行,那麼隨機選一個執行 se
你可能也想看
Google News 追蹤
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
今天我們繼續聊聊由 Vadim Borisov[1]於2023年發表的文章, 《Language Models are Realistic Tabular Data Generators》[2]。 今天我將帶你看看GReaT作為「物件導向編程 Objective-Oriented Pro
※ ORM 是什麼?ORM 的優缺點是什麼? ORM 是什麼? ORM 專用於關聯式資料庫 (relational database)一種叫「物件映射 (object mapping)」 的技術,主要是用程式語言裡的「物件」來包裝資料庫的 SQL (structured query langua
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!
Thumbnail
/ 大家現在出門買東西還會帶錢包嗎 鴨鴨發現自己好像快一個禮拜沒帶錢包出門 還是可以天天買滿買好回家(? 因此為了記錄手機消費跟各種紅利優惠 鴨鴨都會特別注意銀行的App好不好用! 像是介面設計就是會很在意的地方 很多銀行通常會為了要滿足不同客群 會推出很多App讓使用者下載 每次
今天我們繼續聊聊由 Vadim Borisov[1]於2023年發表的文章, 《Language Models are Realistic Tabular Data Generators》[2]。 今天我將帶你看看GReaT作為「物件導向編程 Objective-Oriented Pro
※ ORM 是什麼?ORM 的優缺點是什麼? ORM 是什麼? ORM 專用於關聯式資料庫 (relational database)一種叫「物件映射 (object mapping)」 的技術,主要是用程式語言裡的「物件」來包裝資料庫的 SQL (structured query langua
Thumbnail
有個簡單的方法,把儲存格的文字串連起來!一起來看看怎麼做,很好操作唷!