Beego ORMの使用

2436 ワード

ORMとは?
オブジェクトリレーションシップマッピング(Object Relational Mapping、略称ORM)モードは、オブジェクトとリレーショナル・データベースに存在する相互に不整合な現象を解決するための技術である.簡単に言えば、ORMは、記述オブジェクトとデータベースとの間にマッピングされたメタデータを使用して、プログラム内のオブジェクトをリレーショナル・データベースに自動的に永続化する
beego ORMを使用するには、次の3つのステップがあります.
ステップ1:モデルにstructモデルを構築し、モデルを登録する
package main
import (
"github.com/astaxie/beego/orm"
)
type User struct {
Id          int
Name        string
}
func init() {
orm.RegisterModel(new(User))
}

第2部:使用するdriverをmainに追加します.go中
import( _"github.com/go-sql-driver/mysql"
            _"github.com/lib/pq"
            _"github.com/mattn/go-sqlite3")

手順3:ドライバとデータベース**の登録
  • 登録ドライバ:orm.RegisterDriver(「mysql」,orm.DRMySQL)デフォルトの3つなら書かなくてもいい
  • 登録データベース:orm.RegisterDataBase("default","mysql","root:123456@/golang?charset=utf 8")///defaultという別名のデータベース、ドライバ名、データベースソース
  • を登録
    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    ,      。
    }
    
    func main() {
    o := orm.NewOrm()  //new  Orm,      default    
    o.Using("default") //      Using         
    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ツールの概要
    ただし、データベースを構築した後に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
    }