xorm - Rows 和 Iterate 的 使用

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)

    }

}

xorm - Rows 和 Iterate 的 使用_第1张图片
Rows的使用(推荐)

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)


xorm - Rows 和 Iterate 的 使用_第2张图片
Iterate的使用

Iterate的扩展

engine.Cols("name").Iterate(new(Account), echo)  // 查询特定字段

engine.Omit("name").Iterate(new(Account), echo)  // 排除特定字段

engine.Limit(3,2).Iterate(new(Account), echo)        // 查询结果偏移

你可能感兴趣的:(xorm - Rows 和 Iterate 的 使用)