gorose-最も騒がしいgolang orm、チェーン操作、箱を開けてすぐ使って、1分で上手になって、golang操作データベースを1種の楽しみにします


gorose、最も騒がしいgoorm、チェーン式の操作を持っていて、箱を開けてすぐ使って、1分で8大騒ぎを待つことができて、golang操作データベースを1種の楽しみにして、お母さんは二度と私のデータを処理する苦痛を見ることができなくて、次は私にgoroseの風情を説明させます
騒ぎの1:箱を開けてすぐ使って、1分で手に入れます
db,_ := gorose.Open("xxxxxx              ")

db.Query("select * from user")  //   sql  ,          

騒々しい2:チェーン式の操作、色っぽい姿を現す
db.Table("user").First()

get sql : select * from user where id=1
騒ぎ3:フィールドタイプを事前に宣言する必要がなく、目的のフィールドを直接クエリーします.
db.Table("user").Fields("id as uid,name").Where("id", ">", 1).Get()

同時にstructクエリーをサポート
type userInfo struct {
    Name string `orm:"name"`
}
var user userInfo
var users []userInfo
db.Table(&user).Select()
db.Table(&users).Limit(10).Select()

騒乱四:無感知読み書き分離クラスタ、接続プールサポート
//     
var DbConfigSalve = &gorose.DbConfigSingle{
    Driver:          "mysql",                    //   : mysql/sqlite/oracle/mssql/postgres
    EnableQueryLog:  false,                      //     sql  
    SetMaxOpenConns: 0,                          // (   )        ,    0     
    SetMaxIdleConns: 0,                          // (   )      
    Prefix:          "",                         //    
    Dsn:             "root:root(localhost:3306)/test?charset=utf8", //      
}
//     
var DbConfigMaster = &gorose.DbConfigSingle{
    Driver:          "mysql",                    //   : mysql/sqlite/oracle/mssql/postgres
    EnableQueryLog:  true,                       //     sql  
    SetMaxOpenConns: 0,                          // (   )        ,    0     
    SetMaxIdleConns: 0,                          // (   )      
    Prefix:          "",                         //    
    Dsn:             "root:root(localhost:3306)/test?charset=utf8", //      
}
//     ,    ,            
var DbConfCluster = &gorose.DbConfigCluster{
    Master: DbConfigMaster,
    Slave:  []*gorose.DbConfigSingle{
        DbConfigSalve,
    },
}

騒ぎ5:ワンタッチでトランザクションを処理し、全自動でトランザクションを起動/ロールバック/コミットし、コード自体に専念するだけです.
db.Transaction(func(){
    db.Table("user").Data(map[string]interface{}{"name":"fizz"}).Insert()
    db.Table("user").Data(map[string]interface{}{"name":"fizz2"}).Where("id",1).Update()
})

风骚六:集約クエリー、通常クエリーなど、すべて1行で済ませます
user := db.Table("users")
user.Count()
user.Where("id","5").First()

騒々しい7:大量のデータは自動的にブロック処理して、私はやはりコード自身に専念する必要があります
userテーブルのすべてのデータは、私は毎回100本を取り出して、それから処理して、自動的に1つの100本を取って、処理を続けて、このように繰り返して、指定の条件のデータを処理し終わるまで
db.Table("users").Fields("id, name").Where("id", ">", 2).Chunk(100, func(data []map[string]interface{}) {
        fmt.Println(data)
        for _, item := range data {
            fmt.Println(item["id"], item["name"])
        }
    })

騒々しい8:複雑なネストwhereクエリーは、簡単な閉パッケージで解決する必要があります
user, err := Users.Where("id", ">", 1).Where(func() {
        Users.Where("name", "fizz").OrWhere(func() {
            Users.Where("name", "fizz2").Where(func() {
                Users.Where("name", "fizz3").OrWhere("website", "fizzday")
            })
        })
    }).Where("job", "it").First()

もっと騒々しいところ
  • ご覧くださいhttps://github.com/gohouse/gorose
  • 或点击加入qq群:47089220ゆっくりと~~~
  • Powered by fizzday(8日)