Skip to content

Commit

Permalink
简化Page;
Browse files Browse the repository at this point in the history
  • Loading branch information
zqlovejyc committed Dec 30, 2021
1 parent 4c06bfd commit 4f5cbd9
Showing 1 changed file with 4 additions and 28 deletions.
32 changes: 4 additions & 28 deletions SQLBuilder.Core/Entry/SqlBuilderCore.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4601,21 +4601,11 @@ public SqlBuilderCore<T> Page(int pageSize, int pageIndex, string orderField, st

//MySQL,注意8.0版本才支持WITH语法
if (this.sqlWrapper.DatabaseType == DatabaseType.MySql)
{
sb.Append($"SELECT {countSyntax} AS `TOTAL` FROM ({sql}) AS T;{sql} {order} LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};");
}

//PostgreSQL
if (this.sqlWrapper.DatabaseType == DatabaseType.PostgreSql)
{
sb.Append($"SELECT {countSyntax} AS \"TOTAL\" FROM ({sql}) AS T;{sql} {order} LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};");
}

//SQLite
if (this.sqlWrapper.DatabaseType == DatabaseType.Sqlite)
{
//PostgreSQL、SQLite
if (this.sqlWrapper.DatabaseType == DatabaseType.PostgreSql || this.sqlWrapper.DatabaseType == DatabaseType.Sqlite)
sb.Append($"SELECT {countSyntax} AS \"TOTAL\" FROM ({sql}) AS T;{sql} {order} LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};");
}

this.sqlWrapper.Reset(sb);

Expand Down Expand Up @@ -4669,13 +4659,9 @@ public SqlBuilderCore<T> PageByWith(int pageSize, int pageIndex, string orderFie
if (this.sqlWrapper.DatabaseType == DatabaseType.SqlServer)
{
if (dbVersion > 10)
{
sb.Append($"{sql} SELECT {countSyntax} AS [TOTAL] FROM T;{sql.Remove(sql.LastIndexOf(")"), 1)} {(orderField.IsNotNullOrEmpty() ? order : "")}) SELECT * FROM T OFFSET {(pageIndex - 1) * pageSize} ROWS FETCH NEXT {pageSize} ROWS ONLY;");
}
else
{
sb.Append($"{sql} SELECT {countSyntax} AS [TOTAL] FROM T;{sql},R AS (SELECT ROW_NUMBER() OVER ({order}) AS [ROWNUMBER], * FROM T) SELECT * FROM R WHERE [ROWNUMBER] BETWEEN {(pageIndex - 1) * pageSize + 1} AND {pageIndex * pageSize};");
}
}

//Oracle,注意Oracle需要分开查询总条数和分页数据,此方法仅包含分页语句
Expand All @@ -4689,21 +4675,11 @@ public SqlBuilderCore<T> PageByWith(int pageSize, int pageIndex, string orderFie

//MySQL,注意8.0版本才支持WITH语法
if (this.sqlWrapper.DatabaseType == DatabaseType.MySql)
{
sb.Append($"{sql} SELECT {countSyntax} AS `TOTAL` FROM T;{sql.Remove(sql.LastIndexOf(")"), 1)} {order}) SELECT * FROM T LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};");
}

//PostgreSQL
if (this.sqlWrapper.DatabaseType == DatabaseType.PostgreSql)
{
sb.Append($"{sql} SELECT {countSyntax} AS \"TOTAL\" FROM T;{sql.Remove(sql.LastIndexOf(")"), 1)} {order}) SELECT * FROM T LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};");
}

//SQLite
if (this.sqlWrapper.DatabaseType == DatabaseType.Sqlite)
{
//PostgreSQL、SQLite
if (this.sqlWrapper.DatabaseType == DatabaseType.PostgreSql || this.sqlWrapper.DatabaseType == DatabaseType.Sqlite)
sb.Append($"{sql} SELECT {countSyntax} AS \"TOTAL\" FROM T;{sql.Remove(sql.LastIndexOf(")"), 1)} {order}) SELECT * FROM T LIMIT {pageSize} OFFSET {pageSize * (pageIndex - 1)};");
}

this.sqlWrapper.Reset(sb);

Expand Down

0 comments on commit 4f5cbd9

Please sign in to comment.