internal override void CreatePagination(PaginationComponent pagination, String orderBy, StringBuilder rawSql) { Check.IfNullOrZero(pagination.Size); Check.IfNullOrZero(orderBy); Check.IfNullOrZero(rawSql); rawSql = rawSql.Append($@" {orderBy} LIMIT {pagination.Size * (pagination.Index - 1)},{pagination.Size} ;"); }
internal override void CreatePagination(PaginationComponent pagination, String orderBy, StringBuilder rawSql) { Check.IfNullOrZero(pagination.Size); Check.IfNullOrZero(orderBy); Check.IfNullOrZero(rawSql); String sql = ""; if (_mssqlPaginationVersion == MsSqlPaginationVersion.GREATERTHAN2012) { rawSql = rawSql.Append($@" {orderBy} OFFSET ({pagination.Index * pagination.Size}) ROWS FETCH NEXT {pagination.Size} ROWS ONLY ;"); } else { sql = rawSql.ToString(); sql = $@" SELECT * FROM ( {sql.Insert(sql.IndexOf(" "), $@" TOP({pagination.Size}) ROW_NUMBER() OVER({orderBy}) AS rownumber,")} ) AS temprow WHERE temprow.rownumber>({pagination.Size}*({pagination.Index}-1)) {orderBy}"; } rawSql = new StringBuilder(sql); }
/// <summary> /// 追加分页语句 /// </summary> /// <param name="pageIndex"></param> /// <param name="pageSize"></param> /// <param name="orderBy"></param> /// <param name="rawSql"></param> /// <returns></returns> internal abstract void CreatePagination(PaginationComponent pagination, String orderBy, StringBuilder rawSql);