Rows 和 Iterate 都是迭代数据库记录
Rows:相比Iterate更底层,更灵活
Iterate:高级的Rows封装
1、Rows 举例使用
main函数中:
rows, err := engine.Where("id > ?", 2).Rows(new(Account))
defer rows.Close()
if err != nil {
fmt.Println("err : ", err)
}
bean := &Account{}
// rows.Next() 返回一个bool,是否有下一个数据
for rows.Next() {
// Scan 扫描记录
if err := rows.Scan(bean) ; err != nil {
fmt.Println("err ", err)
} else {
fmt.Printf("%#v\n", bean)
}
}
2、Iterate 举例使用
// main函数外
var echo = func (idx int, bean interface{}) error {
fmt.Printf("%d : %#v \n", idx, bean.(*Account))
return nil
}
// mian函数内
engine.Iterate(new(Account), echo)
Iterate的扩展
engine.Cols("name").Iterate(new(Account), echo) // 查询特定字段
engine.Omit("name").Iterate(new(Account), echo) // 排除特定字段
engine.Limit(3,2).Iterate(new(Account), echo) // 查询结果偏移