原生SQL查询

先查看《最佳实践》一文中models/user.go的定义

创建一个RawSeter

o := orm.NewOrm()
var r RawSeter
r = o.Raw("UPDATE user SET password = ? WHERE name = ?", "newpassword", "peng")

RawSeter的接口定义如下:

type RawSeter interface {
    Exec() (sql.Result, error)
    QueryRow(…interface{}) error
    QueryRows(…interface{}) (int64, error)
    SetArgs(…interface{}) RawSeter
    Values(*[]Params, …string) (int64, error)
    ValuesList(*[]ParamsList, …string) (int64, error)
    ValuesFlat(*ParamsList, string) (int64, error)
    RowsToMap(*Params, string, string) (int64, error)
    RowsToStruct(interface{}, string, string) (int64, error)
    Prepare() (RawPreparer, error)
}

Exec

执行 sql 语句,返回 sql.Resultarrow-up-right 对象

QueryRows

QueryRow 提供高级 sql mapper 功能,可以把查询出来的对象存储到struct中

QueryRows

QueryRows 支持的对象还有 map 规则是和 QueryRow 一样的,但查询出来的对象集要存储在 slice 中

Prepare

用于一次 prepare 多次 exec,以提高批量执行的速度。

Last updated