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
}

  

最新文章

  1. jdbc执行预处理,批处理,LOB字段处理,调用存储过程
  2. Linux内核学习总结
  3. spring原理
  4. python : dictionary changed size during iteration
  5. 手机端的各种默认样式比如 ios的按钮变灰色
  6. nginx的配置,要求根据不同的来路域名,发送到不同的端口去处理
  7. iOS block的使用
  8. nodejs中间层现实
  9. 前端MVC学习笔记(一)——MVC概要与angular概要、模板与数据绑定
  10. CRM2011 concurrency问题及解决方案
  11. bitmap格式分析(转)
  12. spring boot 2使用Mybatis多表关联查询
  13. GlusterFS分布式文件系统的使用
  14. 使用Navicat为MySQL建立定时任务
  15. PHP与MySQL的关系?
  16. 如何设置Mac电脑的DNS
  17. Mysql 更改编码方式
  18. DevExpress v17.2新版亮点—WPF篇(五)
  19. ADO.NET使用using关闭数据库连接
  20. 支撑大规模公有云的Kubernetes改进与优化 (2)

热门文章

  1. Windows下安装Django【转】
  2. hdu1569 方格取数(2) 最大点权独立集=总权和-最小点权覆盖集 (最小点权覆盖集=最小割=最大流)
  3. js 数组取出最大值最小值和平均值的方法
  4. SQL语句大全2
  5. 【转】MYSQL 存储过程定时操作数据库
  6. 【c语言】将正数变成相应的负数,将负数变成相应的正数
  7. VS2013远程调试IIS中的网站
  8. Effective JavaScript Item 55 接受配置对象作为函数參数
  9. Python捕获异常
  10. kafka 并发数配置过程中踩到的坑 InstanceAlreadyExistsException