[Beego模型] 五、构造查询

[Beego模型] 一、ORM 使用方法

[Beego模型] 二、CRUD 操作

[Beego模型] 三、高级查询

[Beego模型] 四、使用SQL语句进行查询

[Beego模型] 五、构造查询

[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
}

摘自:https://beego.me/docs/mvc/model/querybuilder.md

时间: 2024-11-10 07:45:24

[Beego模型] 五、构造查询的相关文章

[Beego模型] 三、高级查询

[Beego模型] 一.ORM 使用方法 [Beego模型] 二.CRUD 操作 [Beego模型] 三.高级查询 [Beego模型] 四.使用SQL语句进行查询 [Beego模型] 五.构造查询 [Beego模型] 六.事务处理 ORM 以 QuerySeter 来组织查询,每个返回 QuerySeter 的方法都会获得一个新的 QuerySeter 对象. 基本使用方法: o := orm.NewOrm() // 获取 QuerySeter 对象,user 为表名 qs := o.Query

[Beego模型] 六、事务处理

[Beego模型] 一.ORM 使用方法 [Beego模型] 二.CRUD 操作 [Beego模型] 三.高级查询 [Beego模型] 四.使用SQL语句进行查询 [Beego模型] 五.构造查询 [Beego模型] 六.事务处理 ORM 可以简单的进行事务操作 o := NewOrm() err := o.Begin() // 事务处理过程 ... ... // 此过程中的所有使用 o Ormer 对象的查询都在事务处理范围内 if SomeError { err = o.Rollback()

5. 蛤蟆的数据结构进阶五动态查询

5. 蛤蟆的数据结构进阶五动态查询 本篇名言:"判断一个人,不是根据他自己的表白或对自己的看法,而是根据他的行动. --列宁" OK,我们接下去来看下动态查询. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/47284473 1.  动态查找表 动态查找表:若在查找过程中可以将查找表中不存在的数据元素插入,或者从查找表中删除某个数据元素,则称这类查找表为动态查找表.动态查找表在查找过程中查找表可能会发生变化.对动态

第五章 查询处理和执行

sql server 2012深入解析与性能优化(第3版) 1.sqlserver通过四个步骤处理一个查询,分析,algebrizing,优化,执行.2.分析是分析语法错误生成分析树,绑定部分有,名字解析,类型推倒,聚合绑定,组合绑定.查询优化器,将查询树找到好的执行计划,如果手动检查计划可能有不同的车.3.sqlserver优化模型,计划缓存,是否为普通计划,执行简化,基于开销的优化.4.并行执行的条件,服务器有多个处理器,允许并行,设置开销域值,并行成本比穿行更便宜.5.在动态管理视图中,s

笔记:ECMA 工厂模型、构造模型、原型模型 (一)

/**************面向对象模型 创建对象*********************//*工厂模式*/ function CreateObj (name,sex,sayName){ var obj = new Object(); obj.name = name; obj.sex = sex; obj.sayName = function(){ alert(this.name); } return obj; } var person = CreateObj("工厂模型createName

Django 【第二十一篇】中介模型以及优化查询以及CBV模式

一.中介模型:多对多添加的时候用到中介模型 自己创建的第三张表就属于是中介模型 class Article(models.Model): ''' 文章表 ''' title = models.CharField(max_length=64,verbose_name="文章标题") summary = models.CharField(max_length=244, verbose_name="文章概要") create_time = models.DateTimeF

【Java】设计模型-五种单例模型

一. 什么是单例模式 只需要某个类同时保留一个对象,不希望有更多对象,此时,我们则应考虑单例模式的设计. 单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在. 单例模式有很多好处,它能够避免实例对象的重复创建,不仅可以减少每次创建对象的时间开销,还可以节约内存空间: 能够避免由于操作多个实例导致的逻辑错误.如果一个对象有可能贯穿整个应用程序,而且起到了全局统一管理控制的作用,那么单例模式也许是一个值得考虑的选择. 二. 单例模式的特点 1. 单例模式只能有一个实例. 2. 单例类必

beego——模型(model)

beego ORM是一个强大的Go语言ORM框架.她的灵感主要来自Django ORM和SQLAlchemy. 已经支持的数据库驱动: MySQL:https://github.com/go-sql-driver/mysql PostgreSQL:https://github.com/lib/pq Sqlite3:https://github.com/mattn/go-sqlite3 ORM的特性: 支持 Go 的所有类型存储 轻松上手,采用简单的 CRUD 风格 自动 Join 关联表 跨数据

Django 模型的基础查询

基础条件查询 1 基本查询 get查询单一结果,如果不存在会抛出模型类.DoesNotExist异常. all查询多个结果. count查询结果数量. >>> BookInfo.objects.get(id=1) <BookInfo: 射雕英雄传> >>> BookInfo.objects.get(pk=2) <BookInfo: 天龙八部> >>> BookInfo.objects.get(pk=20) Traceback (