本文整理汇总了Golang中github.com/quintans/goSQL/db.Query类的典型用法代码示例。如果您正苦于以下问题:Golang Query类的具体用法?Golang Query怎么用?Golang Query使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Query类的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: Group
func (this *QueryBuilder) Group(query *db.Query) {
groups := query.GetGroupByTokens()
for _, group := range groups {
//this.groupPart.Add(this.translator.ColumnAlias(group.Token, group.Position))
this.groupPart.Add(this.translator.Translate(db.QUERY, group.Token))
}
}
示例2: FromSubQuery
func (this *QueryBuilder) FromSubQuery(query *db.Query) {
subquery := query.GetSubQuery()
alias := query.GetSubQueryAlias()
this.fromPart.AddAsOne("(", this.translator.GetSqlForQuery(subquery), ")")
if alias != "" {
this.fromPart.Append(" ", alias)
}
}
示例3: Union
func (this *QueryBuilder) Union(query *db.Query) {
unions := query.GetUnions()
for _, u := range unions {
this.unionPart.Add(" UNION ")
if u.All {
this.unionPart.Add("ALL ")
}
this.unionPart.Add(this.translator.GetSqlForQuery(u.Query))
}
}
示例4: Order
func (this *QueryBuilder) Order(query *db.Query) {
orders := query.GetOrders()
for _, ord := range orders {
if ord.GetHolder() != nil {
this.orderPart.Add(this.translator.Translate(db.QUERY, ord.GetHolder()))
} else {
this.orderPart.Add(ord.GetAlias())
}
if ord.IsAsc() {
this.orderPart.Append(" ASC")
} else {
this.orderPart.Append(" DESC")
}
}
}
示例5: CreateQueryProcessor
func (this *GenericTranslator) CreateQueryProcessor(query *db.Query) QueryProcessor {
proc := this.QueryProcessorFactory()
proc.Column(query)
if query.GetTable() != nil {
proc.From(query)
} else {
proc.FromSubQuery(query)
}
proc.Where(query)
// it is after the where clause because the joins can go to the where clause,
// and this way the restrictions over the driving table will be applied first
AppendJoins(query.GetJoins(), proc)
proc.Group(query)
proc.Having(query)
proc.Union(query)
proc.Order(query)
return proc
}
示例6: GetSqlForQuery
func (this *GenericTranslator) GetSqlForQuery(query *db.Query) string {
proc := this.CreateQueryProcessor(query)
// SELECT COLUNAS
sel := tk.NewStrBuffer()
sel.Add("SELECT ")
if query.IsDistinct() {
sel.Add("DISTINCT ")
}
sel.Add(proc.ColumnPart())
// FROM
sel.Add(" FROM ", proc.FromPart())
// JOINS
sel.Add(proc.JoinPart())
// WHERE - conditions
if query.GetCriteria() != nil {
sel.Add(" WHERE ", proc.WherePart())
}
// GROUP BY
if len(query.GetGroupBy()) != 0 {
sel.Add(" GROUP BY ", proc.GroupPart())
}
// HAVING
if query.GetHaving() != nil {
sel.Add(" HAVING ", proc.HavingPart())
}
// UNION
if len(query.GetUnions()) != 0 {
sel.Add(proc.UnionPart())
}
// ORDER
if len(query.GetOrders()) != 0 {
sel.Add(" ORDER BY ", proc.OrderPart())
}
sql := this.overrider.PaginateSQL(query, sel.String())
return sql
}
示例7: Having
func (this *QueryBuilder) Having(query *db.Query) {
having := query.GetHaving()
if having != nil {
this.havingPart.Add(this.translator.Translate(db.QUERY, having))
}
}
示例8: Where
func (this *QueryBuilder) Where(query *db.Query) {
criteria := query.GetCriteria()
if criteria != nil {
this.wherePart.Add(this.translator.Translate(db.QUERY, criteria))
}
}
示例9: From
func (this *QueryBuilder) From(query *db.Query) {
table := query.GetTable()
alias := query.GetTableAlias()
this.fromPart.AddAsOne(this.translator.TableName(table), " ", alias)
}
示例10: PaginateSQL
func (this *FirebirdSQLTranslator) PaginateSQL(query *db.Query, sql string) string {
sb := tk.NewStrBuffer()
if query.GetLimit() > 0 {
sb.Add(sql, " ROWS ")
if query.GetSkip() > 0 {
sb.Add(":", db.OFFSET_PARAM, " TO ")
query.SetParameter(db.OFFSET_PARAM, query.GetSkip()+1)
}
sb.Add(":", db.LIMIT_PARAM)
query.SetParameter(db.LIMIT_PARAM, query.GetSkip()+query.GetLimit())
return sb.String()
}
return sql
}
示例11: PaginateSQL
func (this *MySQL5Translator) PaginateSQL(query *db.Query, sql string) string {
sb := tk.NewStrBuffer()
if query.GetLimit() > 0 {
sb.Add(sql, " LIMIT :", db.OFFSET_PARAM, ", :", db.LIMIT_PARAM)
if query.GetSkip() >= 0 {
query.SetParameter(db.OFFSET_PARAM, query.GetSkip())
}
query.SetParameter(db.LIMIT_PARAM, query.GetLimit())
return sb.String()
}
return sql
}
示例12: PaginateSQL
func (this *OracleTranslator) PaginateSQL(query *db.Query, sql string) string {
if query.GetSkip() > 0 {
query.SetParameter(db.OFFSET_PARAM, query.GetSkip()+1)
query.SetParameter(db.LIMIT_PARAM, query.GetSkip()+query.GetLimit())
return fmt.Sprintf("select * from ( select a.*, rownum rnum from ( %s ) a where rownum <= :%s ) where rnum >= :%s",
sql, db.LIMIT_PARAM, db.OFFSET_PARAM)
} else if query.GetLimit() > 0 {
query.SetParameter(db.LIMIT_PARAM, query.GetLimit())
return fmt.Sprintf("select * from ( %s ) where rownum <= :%s", sql, db.LIMIT_PARAM)
}
return sql
}
示例13: QueryForPage
func QueryForPage(
query *db.Query,
criteria Criteria,
target interface{},
transformer func(in interface{}) interface{},
) (Page, error) {
max := criteria.PageSize
first := (criteria.Page - 1) * max
// for the first page the offset is zero
query.Skip(first)
if max > 0 {
query.Limit(max + 1)
}
var entities coll.Collection
var err error
var results []interface{}
if reflect.TypeOf(target).Kind() == reflect.Func {
results, err = query.ListInto(target)
} else if _, ok := target.(tk.Hasher); ok {
entities, err = query.ListFlatTreeOf(target)
} else {
entities, err = query.ListOf(target)
}
if err != nil {
return Page{}, err
}
if results == nil {
results = entities.Elements()
}
page := Page{}
size := int64(len(results))
if max > 0 && size > max {
page.Last = false
page.Results = results[:max]
} else {
page.Last = true
page.Results = results
}
// transform results
if transformer != nil {
for k, v := range page.Results {
page.Results[k] = transformer(v)
}
}
// count records
if criteria.CountRecords {
DB := query.GetDb()
cnt := DB.Query(query.GetTable())
cnt.Copy(query)
cnt.ColumnsReset()
cnt.CountAll()
cnt.OrdersReset()
var recs int64
_, err = cnt.SelectInto(&recs)
if err != nil {
return Page{}, err
}
page.Count = Int64(recs)
}
return page, nil
}