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)
前两种方式都是预先初始化对象(提前分配内存),推荐的方式:
var user *User
g.Model("user").Where("id", 1).Scan(&user)
15 Comments
王一飞
可不可以增加一个参数或者是函数来让Scan方法自动初始化切片?
例如:
郭强
当没有数据的时候不会自动初始化的,若有问题请提
issue
。sudden3
切片\数组不初始化的话转换json后是null而不是空数组
陈鹏
我也想,没有数据的时间进行初始化,不然每次返回前端默认数组是null
糖水不加糖
先make再scan
朱华 Hunk
ScanAndCount这个方法好鸡肋。直接Scan出来再len()求一下就有Count了,还少一次IO。
还不如把它设计成ScanAdnCount( & rs, & total, offset, limit) 这样还实用些。先求没有offset及limit限制的Count,再加上offset及limit后进行scan
郭强
并不是
len
一下就有Count
,这个是给分页用的,返回的是总数的Count
。朱华 Hunk
它会忽略 Offset及Limit设置?
郭强
查询
Count
的时候会忽略的。已增加相关文档:朱华 Hunk
之前一直以为Count会被limit约束。才知道原来不会。
apple15634145
话说Scan中指针和不用指针的结果是一样的吗?
比如
跟
扫描出来的结果是一样的吗?
warning
Scan 的err抛出 no rows in result set 怎么解决,我认为这不是一个错误
糖水不加糖
这个错误是sql包定义的,如果要屏蔽这个错误可以对dao做一次封装判定一次 if err == sql.ErrNoRows { return nil}
SnoWich
请问下匿名结构体中的字段查不到值这个有办法处理吗
数据库是有值的,使用with方式能查出来
coderon
请问一下同一函数内,scan执行两遍,会查询两遍数据库吗?