zoukankan      html  css  js  c++  java
  • 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
    }
    

      

  • 相关阅读:
    redis的发布与订阅机制
    三次握手与四次挥手详解
    super的实例及实现原理
    【node.js】入门篇
    简单理解什么是数据库CDC?(以mysql为例)
    Java小工具类(一)json的K-V转换为Java类属性
    linux系统文件拷贝命令rsync
    linux系统配置常用命令top
    关于ganymed-ssh2版本262和build210的SCPClient类的区别
    阿里巴巴java-数据库开发手册(2020泰山版)
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/10125589.html
Copyright © 2011-2022 走看看