コード例 #1
0
        /// <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(";");
        }
コード例 #2
0
 /// <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);
 }
コード例 #3
0
ファイル: DefaultQuery.cs プロジェクト: ntzw/cms
        public DefaultQuery(object value, IQuerySql querySql)
        {
            switch (querySql.Symbol)
            {
            case QuerySymbol.Like:
                Value = $"%{value}%";
                break;

            default:
                Value = value;
                break;
            }


            QuerySql = querySql;
        }
コード例 #4
0
        /// <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);
        }
コード例 #5
0
 /// <summary>
 /// 选项特定数量的记录数的查询脚本。
 /// </summary>
 /// <param name="sql">当前查询实例。</param>
 /// <param name="builder"><see cref="SqlIndentedStringBuilder"/>实例。</param>
 protected abstract void SizeQuery(IQuerySql sql, SqlIndentedStringBuilder builder);
コード例 #6
0
 /// <summary>
 /// 分页查询脚本。
 /// </summary>
 /// <param name="sql">当前查询实例。</param>
 /// <param name="builder"><see cref="IndentedStringBuilder"/>实例。</param>
 protected abstract void PageQuery(IQuerySql sql, IndentedStringBuilder builder);