- mysql:
- postgresql:
- sqlite3:
beego-orm的相關特性
- 支援 go 的所有型別儲存
- 輕鬆上手,採用簡單的 crud 風格
- 自動 join 關聯表
- 跨資料庫相容查詢
- 允許直接使用 sql 查詢/對映
- 嚴格完整的測試保證 orm 的穩定與健壯
orm的使用
- 匯入orm的依賴:go get github.com/astaxie/beego/orm.
- 使用的步驟:
1.往orm註冊預設資料庫(包括資料庫的連線的一些設定引數),往orm註冊model。
def.go
/**
*實體定義
*/type user struct
/***資料相關配置
*discription:使用orm操作mysql
*/type usermanager struct
/** usermanger構造器
*/
func newusermanager(dbconf *dbconfig) *usermanager
mgr.initdb()//初始化orm
return mgr
}/**
初始化db,註冊預設資料庫,同時將實體模型也註冊上去
*/func (mgr *usermanager) initdb()
orm.registermodel(new(user))
}
注意可以使用以下方式進行切換資料庫:
orm.registerdatabase("db1", "mysql", "root:root@/orm_db2?charset=utf8")
orm.registerdatabase("db2", "sqlite3", "data.db")
o1 := orm.neworm()
o1.using("db1")
o2 := orm.neworm()
o2.using("db2")
2.運算元據庫
對於要操作的資料庫如果你知道它的主鍵,則你可以用orm物件的crud方法進行資料庫的相關操作。
/**
*通過orm物件來進行資料庫的操作,這種情況是必須要知道主鍵
*/func (mgr *usermanager) opreateuserwithormobjct(id int) ()
如果你不知道主鍵則可以通過orm的querytable或者raw執行原始的sql語句來運算元據庫。
/**
根據某些欄位來read 1:採用querytable方法來查詢 2:採用raw執行sql語句
*/func (mgr *usermanager) getusersbyidwithquerytable(id string) (*user, error)
return user, nil
}
3. 分頁查詢,可以使用limt方法來進行分頁(注意limt後面的引數,第乙個表示的是分頁大小,第二個是指的偏移量,如同sql的offset)。
/**
* 分頁結構體
*/
type page struct
}func pageutil(count int, pageno int, pagesize int, list inte***ce{}) page
return page
}
func (mgr *usermanager) getusrswithpage(ps int, pagesize int) (page page )
// user 包裝了下面的查詢結果
type user struct
var users user
// 獲取 querybuilder 物件. 需要指定資料庫驅動引數。
// 第二個返回值是錯誤物件,在這裡略過
qb, _ := orm.newquerybuilder("mysql")
// 構建查詢物件
qb.select("user.name",
"profile.age").
from("user").
innerjoin("profile").on("user.id_user = profile.fk_user").
where("age > ?").
orderby("name").desc().
limit(10).offset(0)
// 匯出 sql 語句
sql := qb.string()
// 執行 sql 語句
o := orm.neworm()
o.raw(sql,20).queryrows(&users)
o := neworm()
err := o.begin()
// 事務處理過程
......
// 此過程中的所有使用 o ormer 物件的查詢都在事務處理範圍內
if someerror else
文章標籤:
ormbeego
gomysql
beego框架之orm模組
1.安裝mysql驅動 2.建立模型對映,並使用結構體的tag標籤來將結構體的成員變數和表的字段做對映。在models模組裡,被註冊的結構體與資料庫裡的表會以一種預設方式進行一一對應。然而,在實際開發中,預設的這種對映關係並不是我們所期待的,所以我們需要指定被註冊的結構體與資料庫裡的表之間的關係。其...
beego框架之 orm模型
go語言web框架中 orm使用結構體來定義 beego orm type user struct 定義字段 定義型別 定義屬性 beego orm欄位的屬性引數 pk設定為主鍵,適用於自定義其他型別為主鍵 auto 當 field 型別為 int,int32,int64,uint,uint32,u...
beego框架之orm模組 mysql
參考beego原文 beego orm 是乙個強大的 go 語言 orm 框架,orm模組主要是處理mvc中的m models 首先以bee工具建立一工程名為 beegoorm,修改的檔案為 beegoorm main.go 和 beegoorm models models.go 僅2個檔案 資料庫...