Beego ORM的使用

什么是ORM?

對象關(guān)系映射(Object Relational Mapping,簡稱ORM)模式是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。簡單的說,ORM是通過使用描述對象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對象自動持久化到關(guān)系數(shù)據(jù)庫中

使用beego ORM有三步

第一步:在model里面構(gòu)造struct模型,并注冊模型

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

第二部:將你需要使用的 driver 加入main.go中

import( _"github.com/go-sql-driver/mysql"
            _"github.com/lib/pq"
            _"github.com/mattn/go-sqlite3")

第三步:注冊驅(qū)動和數(shù)據(jù)庫**

  1. 注冊驅(qū)動:orm.RegisterDriver("mysql", orm.DRMySQL) 如果是默認(rèn)的三個可以不寫
  2. 注冊數(shù)據(jù)庫:orm.RegisterDataBase("default", "mysql", "root:123456@/golang?charset=utf8") ////注冊一個別名為default的數(shù)據(jù)庫、驅(qū)動名字、數(shù)據(jù)庫源
main.go
package main
import (
"fmt"
"github.com/astaxie/beego/orm"
_ "github.com/go-sql-driver/mysql"
)

func init() {
orm.RegisterDriver("mysql", orm.DRMySQL)    //可以不加
orm.RegisterDataBase("default", "mysql", "root:password@/databasename?charset=utf8")
//ORM 必須注冊一個別名為default的數(shù)據(jù)庫,作為默認(rèn)使用。
}

func main() {
o := orm.NewOrm()  //new一個Orm,默認(rèn)使用名為default的數(shù)據(jù)庫
o.Using("default") // 你可以使用Using函數(shù)指定其他數(shù)據(jù)庫
user := new(User)
user.Name = "ztz"
fmt.Println(o.Insert(user))
}

自己寫是不是很麻煩?bee為我們提供了人性化的工具,在使用beego框架時,可以使用bee的工具,如:bee generate自動化一鍵生成 model,router,controllers

bee generate appcode [-tables=""] [-driver=mysql] [-conn="root:@tcp(127.0.0.1:3306)/test"] [-level=3]

bee工具簡介

但有一點要注意,在構(gòu)造好數(shù)據(jù)庫之后再使用generate工具,并且一個表中一定要有主鍵,不然生成的文件不是完整的。

接口使用:

type Ormer interface {
Read(interface{}, …string) error
ReadOrCreate(interface{}, string, …string) (bool, int64, error)
Insert(interface{}) (int64, error)
InsertMulti(int, interface{}) (int64, error)
Update(interface{}, …string) (int64, error)
Delete(interface{}) (int64, error)
LoadRelated(interface{}, string, …interface{}) (int64, error)
QueryM2M(interface{}, string) QueryM2Mer
QueryTable(interface{}) QuerySeter
Using(string) error
Begin() error
Commit() error
Rollback() error
Raw(string, …interface{}) RawSeter
Driver() Driver
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容