gorose-最風騷的golang orm,鏈式操做, 開箱即用, 一分鐘上手, 讓golang操做數據庫成爲一種享受

gorose, 最風騷的go orm, 擁有鏈式操做, 開箱即用, 一分鐘上手等八大風騷, 讓golang操做數據庫成爲一種享受, 媽媽再也看不到我處理數據的痛苦了, 下面就讓我一一講解gorose的風情mysql

風騷一 : 開箱即用, 一分鐘上手

db,_ := gorose.Open("xxxxxx這裏是配置文件中的數據庫配置")

db.Query("select * from user")  // 原生sql執行, 返回格式化後的結果

風騷二 : 鏈式操做, 盡顯嫵媚之姿

db.Table("user").First()

get sql : select * from user where id=1git

風騷三 : 直接查詢想要的字段, 無需預先聲明字段類型

db.Table("user").Fields("id as uid,name").Where("id", ">", 1).Get()

同時支持傳入struct查詢github

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,
    },
}

風騷五 : 一鍵處理事務, 全自動 啓動/回滾/提交 事務, 我只需專一於代碼自己

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()
})

風騷六 : 聚合查詢, 常規查詢等, 通通一行搞定

user := db.Table("users")
user.Count()
user.Where("id","<", 10).Get()
user.Where("len(name)>5").First()

風騷七 : 大量數據自動分塊處理, 我仍是隻須要專一於代碼自己

user表中的全部數據, 我每次取出100條, 而後處理完, 自動取下一個100條, 繼續處理, 如此反覆, 直處處理完指定條件的數據golang

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"])
        }
    })

風騷八 : 複雜嵌套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()

更多風騷之處


powered by fizzday(星期八)web

相關文章
相關標籤/搜索