/// <summary> /// 分页查询脚本。 /// </summary> /// <param name="sql">当前查询实例。</param> /// <param name="builder"><see cref="SqlIndentedStringBuilder"/>实例。</param> protected override void PageQuery(IQuerySql sql, SqlIndentedStringBuilder builder) { builder.Append("SELECT "); if (sql.IsDistinct) { builder.Append("DISTINCT "); } builder.Append(sql.FieldSql).Append(" "); builder.Append(sql.FromSql).Append(" "); builder.Append(sql.WhereSql).Append(" "); builder.Append(sql.OrderBySql).Append(" "); var size = sql.Size ?? 20; builder.Append("OFFSET ") .Append(Math.Max((sql.PageIndex.Value - 1) * size, 0)) .Append(" ROWS FETCH NEXT ") .Append(size) .AppendLine(" ROWS ONLY;"); builder.Append("SELECT COUNT("); if (sql.IsDistinct && sql.Aggregation != "1") { builder.Append("DISTINCT "); } builder.Append(sql.Aggregation); builder.Append(")"); builder.Append(sql.FromSql).Append(" "); builder.Append(sql.WhereSql).Append(";"); }
/// <summary> /// 查询脚本。 /// </summary> /// <param name="sql">当前查询实例。</param> /// <param name="builder"><see cref="IndentedStringBuilder"/>实例。</param> protected override void Query(IQuerySql sql, SqlIndentedStringBuilder builder) { builder.Append("SELECT "); if (sql.IsDistinct) { builder.Append("DISTINCT "); } builder.Append(sql.FieldSql).Append(" "); builder.Append(sql.FromSql).Append(" "); builder.Append(sql.WhereSql).Append(" "); builder.Append(sql.OrderBySql).Append(SqlHelper.StatementTerminator); }
public DefaultQuery(object value, IQuerySql querySql) { switch (querySql.Symbol) { case QuerySymbol.Like: Value = $"%{value}%"; break; default: Value = value; break; } QuerySql = querySql; }
/// <summary> /// 生成实体类型的SQL脚本。 /// </summary> /// <param name="sql">SQL查询实例。</param> /// <returns>返回SQL脚本。</returns> public SqlIndentedStringBuilder Query(IQuerySql sql) { var builder = new SqlIndentedStringBuilder(); if (sql.PageIndex != null) { PageQuery(sql, builder); } else if (sql.Size != null) { SizeQuery(sql, builder); } else { Query(sql, builder); } return(builder); }
/// <summary> /// 选项特定数量的记录数的查询脚本。 /// </summary> /// <param name="sql">当前查询实例。</param> /// <param name="builder"><see cref="SqlIndentedStringBuilder"/>实例。</param> protected abstract void SizeQuery(IQuerySql sql, SqlIndentedStringBuilder builder);
/// <summary> /// 分页查询脚本。 /// </summary> /// <param name="sql">当前查询实例。</param> /// <param name="builder"><see cref="IndentedStringBuilder"/>实例。</param> protected abstract void PageQuery(IQuerySql sql, IndentedStringBuilder builder);