beego框架圖文簡介五分鐘講解04-ORM框架操作數據庫

|版權聲明:本文爲博主原創文章,未經博主允許不得轉載。博客地址:https://blog.csdn.net/sgsgy5

2.10 ORM框架

Beego中內嵌了ORM框架,用來操作數據庫。那麼ORM框架是什麼呢?ORM框架是Object-RelationShip-Mapping的縮寫,中文叫對象關係映射,他們之間的關係,我們用圖來表示:
在這裏插入圖片描述

2.10.1 ORM初始化

  • 首先要導包

    import "github.com/astaxie/beego/orm"
    
  • 然後要定義一個結構體

    type User struct{
        Id int
        Name string
        PassWord string
    }
    

    思考:如果表名和字段名爲小寫會發生什麼結果?

    注意觀察數據庫表中的字段和結構體中的字段是否一樣?

  • 然後向數據庫中註冊表,這一步又分爲三步:

    • 連接數據庫

      用RegisterDataBase()函數,第一個參數爲數據庫別名,也可以理解爲數據庫的key值,項目中必須有且只能有一個別名爲default的連接,第二個參數是數據庫驅動,這裏我們用的是MySQL數據庫,所以以MySQL驅動爲例,第三個參數是連接字符串,和傳統操作數據庫連接字符串一樣,格式爲:用戶名:密碼@tcp(ip:port)/數據庫名稱?編碼方式,代碼如下:

      orm.RegisterDataBase("default","mysql","root:123456@tcp(127.0.0.1:3306)/class1?charset=utf8")
      

      注意:ORM只能操作表,不能操作數據庫,所以我們連接的數據庫要提前在MySQL終端創建好。

    • 註冊數據庫表

      用orm.RegisterModel()函數,參數是結構體對象,如果有多個表,可以用 ,隔開,多new幾個對象:

      orm.RegisterModel(new(User))
      
    • 生成表

      用orm.RunSyncdb()函數,這個函數有三個參數,

      第一個參數是數據庫的別名和連接數據庫的第一個參數相對應。

      第二個參數是是否強制更新,一般我們寫的都是false,如果寫true的話,每次項目編譯一次數據庫就會被清空一次,fasle的話會在數據庫發生重大改變(比如添加字段)的時候更新數據庫。

      第三個參數是用來說,生成表過程是否可見,如果我們寫成課件,那麼生成表的時候執行的SQL語句就會在終端看到。反之看不見。代碼如下:

      orm.RunSyncdb("default",false,true)
      

完整代碼如下:

import "github.com/astaxie/beego/orm"

type User struct {
	Id int
	Name string
	Passwd string
}

func init(){
	//1.連接數據庫
	orm.RegisterDataBase("default","mysql","root:123456@tcp(127.0.0.1:3306)/test?charset=utf8")
	//2.註冊表
	orm.RegisterModel(new(User))
	//3.生成表
	//1.數據庫別名
	//2.是否強制更新
	//3.創建表過程是否可見
	orm.RunSyncdb("default",false,true)
}

因爲這裏我們把ORM初始化的代碼放到了 models包的init()函數裏面,所以如果我們想讓他執行的話就需要在main.go裏面加入這麼一句代碼:

import _ "classOne/models"

2.10.2 簡單的ORM增刪改查操作

在執行ORM的操作之前需要先把ORM包導入,但是GoLand會自動幫我們導包,也可以手動導包

import "github.com/astaxie/beego/orm"

插入

  • 先獲取一個ORM對象,用orm.NewOrm()即可獲得

    o := orm.NewOrm()
    
  • 定義一個要插入數據庫的結構體對象

    var user User
    
  • 給定義的對象賦值

    user.Name = "xiaoming"
    user.Passwd = "xiaoming"
    

    這裏不用給Id賦值,因爲建表的時候我們沒有指定主鍵,ORM默認會以變量名爲Id,類型爲int的字段當主鍵,至於如何指定主鍵,我們明天詳細介紹。

  • 執行插入操作,o.Insert()插入,參數是結構體對象,返回值是插入的id和錯誤信息。

    id, err := o.Insert(&user)
    if err == nil {
        fmt.Println(id)
    }
    

查詢

  • 也是要先獲得一個ORM對象

    o := orm.NewOrm()
    
  • 定義一個要獲取數據的結構體對象

    var user User
    
  • 給結構體對象賦值,相當於給查詢條件賦值

    user.Name = "xiaoming"
    
  • 查詢,用o.Read(),第一個參數是對象地址,第二個參數是指定查詢字段,返回值只有錯誤信息。

    err := o.Read(&user,"Name")
    if err != nil{
    		beego.Info("查詢數據錯誤",err)
    		return
    	}
    

    如果查詢字段是查詢對象的主鍵的話,可以不用指定查詢字段

更新

  • 一樣的套路,先獲得ORM對象

    o := orm.NewOrm()
    
  • 定義一個要更新的結構體對象

    var user User
    
  • 給結構體對象賦值,相當於給查詢條件賦值

    user.Name = "xiaoming"
    
  • 查詢要更新的對象是否存在

    err := o.Read(&user)
    if err != nil{
    	beego.Info("查詢數據錯誤",err)
    	return
    }
    
  • 如果查找到了要更新的對象,就給這個對象賦新值

    user.Passwd = "itheima"
    
  • 執行更新操作,用o.Update()函數,參數是結構體對象指針,返回值是更新的條目數和錯誤信息

    count,err=o.Update(&user)
    if err != nil{
    	beego.Info("更新數據錯誤",err)
    	return
    }
    

刪除

  • 同樣的,獲取ORM對象,獲取要刪除的對象

    o := orm.NewOrm()
    var user User
    
  • 給刪除對象賦值,刪除的對象主鍵必須有值,如果主鍵沒值,就查詢一下。我們這裏直接給主鍵賦值。

    user.Id = 1
    
  • 執行刪除操作,用的方法是o.Delete(),參數是刪除的結構體對象,返回值是刪除的條目數和錯誤信息

num, err := o.Delete(&User{Id: 1})
if err == nil {
    fmt.Println(num)
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章