beego——构造查询
QueryBuilder提供了一个简单、流畅的SQL查询构造器。在不影响代码可读性的前提下用来快速的建立SQL语句。
QueryBuilder在功能上与ORM重合,但是个由利弊,ORM更适合用于简单的CRUD操作,
而QueryBuilder更适用于复杂的查询,例如查询中包含子查询和多重联结。
使用示例:
// 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接口
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 }