GoFrame 數(shù)據(jù)查詢-Scan

2022-04-02 09:34 更新

?Scan?方法支持將查詢結果轉換為結構體或者結構體數(shù)組,?Scan?方法將會根據(jù)給定的參數(shù)類型自動識別執(zhí)行的轉換類型。

struct對象

?Scan?支持將查詢結果轉換為一個?struct?對象,查詢結果應當是特定的一條記錄,并且?pointer?參數(shù)應當為?struct?對象的指針地址(?*struct?或者?**struct?),使用方式例如:

type User struct {
    Id         int
    Passport   string
    Password   string
    NickName   string
    CreateTime *gtime.Time
}
user := User{}
g.Model("user").Where("id", 1).Scan(&user)

或者

var user = User{}
g.Model("user").Where("id", 1).Scan(&user)

前兩種方式都是預先初始化對象(提前分配內(nèi)存),推薦的方式:

var user *User
g.Model("user").Where("id", 1).Scan(&user)

這種方式只有在查詢到數(shù)據(jù)的時候才會執(zhí)行初始化及內(nèi)存分配。注意在用法上的區(qū)別,特別是傳遞參數(shù)類型的差別(前兩種方式傳遞的參數(shù)類型是?*User?,這里傳遞的參數(shù)類型其實是?**User?)。

struct數(shù)組

?Scan?支持將多條查詢結果集轉換為一個?[]struct/[]*struct?數(shù)組,查詢結果應當是多條記錄組成的結果集,并且?pointer?應當為數(shù)組的指針地址,使用方式例如:

var users []User
g.Model("user").Scan(&users)

或者

var users []*User
g.Model("user").Scan(&users)


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號