gorose-最も騒がしいgolang orm、チェーン操作、箱を開けてすぐ使って、1分で上手になって、golang操作データベースを1種の楽しみにします
gorose、最も騒がしいgoorm、チェーン式の操作を持っていて、箱を開けてすぐ使って、1分で8大騒ぎを待つことができて、golang操作データベースを1種の楽しみにして、お母さんは二度と私のデータを処理する苦痛を見ることができなくて、次は私にgoroseの風情を説明させます
騒ぎの1:箱を開けてすぐ使って、1分で手に入れます
騒々しい2:チェーン式の操作、色っぽい姿を現す
get sql :
騒ぎ3:フィールドタイプを事前に宣言する必要がなく、目的のフィールドを直接クエリーします.
同時に
騒乱四:無感知読み書き分離クラスタ、接続プールサポート
騒ぎ5:ワンタッチでトランザクションを処理し、全自動でトランザクションを起動/ロールバック/コミットし、コード自体に専念するだけです.
风骚六:集約クエリー、通常クエリーなど、すべて1行で済ませます
騒々しい7:大量のデータは自動的にブロック処理して、私はやはりコード自身に専念する必要があります
userテーブルのすべてのデータは、私は毎回100本を取り出して、それから処理して、自動的に1つの100本を取って、処理を続けて、このように繰り返して、指定の条件のデータを処理し終わるまで
騒々しい8:複雑なネストwhereクエリーは、簡単な閉パッケージで解決する必要があります
もっと騒々しいところご覧くださいhttps://github.com/gohouse/gorose 或点击加入qq群:47089220ゆっくりと~~~ Powered by fizzday(8日)
騒ぎの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()
もっと騒々しいところ