W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
QueryBuilder 提供了一個(gè)簡(jiǎn)便,流暢的 SQL 查詢構(gòu)造器。在不影響代碼可讀性的前提下用來(lái)快速的建立 SQL 語(yǔ)句。
QueryBuilder 在功能上與 ORM 重合, 但是各有利弊。ORM 更適用于簡(jiǎn)單的 CRUD 操作,而 QueryBuilder 則更適用于復(fù)雜的查詢,例如查詢中包含子查詢和多重聯(lián)結(jié)。
使用方法:
// User 包裝了下面的查詢結(jié)果
type User struct {
Name string
Age int
}
var users []User
// 獲取 QueryBuilder 對(duì)象. 需要指定數(shù)據(jù)庫(kù)驅(qū)動(dòng)參數(shù)。
// 第二個(gè)返回值是錯(cuò)誤對(duì)象,在這里略過(guò)
qb, _ := orm.NewQueryBuilder("mysql")
// 構(gòu)建查詢對(duì)象
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)
// 導(dǎo)出 SQL 語(yǔ)句
sql := qb.String()
// 執(zhí)行 SQL 語(yǔ)句
o := orm.NewOrm()
o.Raw(sql, 20).QueryRows(&users)
完整 API 接口:
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
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: