beego框架之orm的使用

2021-08-20 21:16:10 字數 3140 閱讀 6225

- 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個檔案 資料庫...