beego——構造查詢

QueryBuilder提供了一個簡單、流暢的SQL查詢構造器。在不影響代碼可讀性的前提下用來快速的創建SQL語句。mysql

QueryBuilder在功能上與ORM重合,可是個由利弊,ORM更適合用於簡單的CRUD操做,sql

而QueryBuilder更適用於複雜的查詢,例如查詢中包含子查詢和多重聯結。數據庫

使用示例:ui

// User 包裝了下面的查詢結果
type User struct {
    Name string
    Age  int
}
var users []User

// 獲取 QueryBuilder 對象. 須要指定數據庫驅動參數。
// 第二個返回值是錯誤對象,在這裏略過
qb, _ := orm.NewQueryBuilder("mysql")

// 構建查詢對象
qb.Select("user.name",
    "profile.age").
    From("user").
    InnerJoin("profile").On("user.id_user = profile.fk_user").
    Where("age > ?").
    OrderBy("name").Desc().
    Limit(10).Offset(0)

// 導出 SQL 語句
sql := qb.String()

// 執行 SQL 語句
o := orm.NewOrm()
o.Raw(sql, 20).QueryRows(&users)

  

完整API接口orm

type QueryBuilder interface {
    Select(fields ...string) QueryBuilder
    From(tables ...string) QueryBuilder
    InnerJoin(table string) QueryBuilder
    LeftJoin(table string) QueryBuilder
    RightJoin(table string) QueryBuilder
    On(cond string) QueryBuilder
    Where(cond string) QueryBuilder
    And(cond string) QueryBuilder
    Or(cond string) QueryBuilder
    In(vals ...string) QueryBuilder
    OrderBy(fields ...string) QueryBuilder
    Asc() QueryBuilder
    Desc() QueryBuilder
    Limit(limit int) QueryBuilder
    Offset(offset int) QueryBuilder
    GroupBy(fields ...string) QueryBuilder
    Having(cond string) QueryBuilder
    Subquery(sub string, alias string) string
    String() string
}
相關文章
相關標籤/搜索