@@ -46,7 +46,7 @@
|
|||||||
SELECT (
|
SELECT (
|
||||||
SELECT IS_IDENTITY FROM ${dbName}.SYS.ALL_COLUMNS
|
SELECT IS_IDENTITY FROM ${dbName}.SYS.ALL_COLUMNS
|
||||||
WHERE ${dbName}.SYS.ALL_COLUMNS.NAME=SYSCOLUMNS.NAME AND OBJECT_ID = OBJECT_ID('${dbName}..${tableName}')
|
WHERE ${dbName}.SYS.ALL_COLUMNS.NAME=SYSCOLUMNS.NAME AND OBJECT_ID = OBJECT_ID('${dbName}..${tableName}')
|
||||||
) selfIncrement, SYSCOLUMNS.NAME name,SYSTYPES.NAME type,Iif(SYSCOLUMNS.ISNULLABLE=1,'1','0') nullable,
|
) selfIncrement, SYSCOLUMNS.NAME name,SYSTYPES.NAME type,case SYSCOLUMNS.ISNULLABLE when 1 then '1' else '0' end as nullable,
|
||||||
SYSCOLUMNS.LENGTH length,PRIMARYINFO.ISPRAMARY primaryKey
|
SYSCOLUMNS.LENGTH length,PRIMARYINFO.ISPRAMARY primaryKey
|
||||||
FROM ${dbName}..SYSCOLUMNS
|
FROM ${dbName}..SYSCOLUMNS
|
||||||
LEFT JOIN PRIMARYINFO ON PRIMARYINFO.COLUMNNAME=NAME
|
LEFT JOIN PRIMARYINFO ON PRIMARYINFO.COLUMNNAME=NAME
|
||||||
|
|||||||
@@ -48,8 +48,8 @@ public class OracleServiceImpl extends DbBaseService {
|
|||||||
}
|
}
|
||||||
StringBuilder sqlSbFinal = new StringBuilder();
|
StringBuilder sqlSbFinal = new StringBuilder();
|
||||||
Integer pageSize = dataViewParam.getPageSize() * dataViewParam.getPageNum();
|
Integer pageSize = dataViewParam.getPageSize() * dataViewParam.getPageNum();
|
||||||
Integer offsetSize = dataViewParam.getPageSize() * (dataViewParam.getPageNum() - 1) + 1;
|
Integer pageNum = dataViewParam.getPageSize() * (dataViewParam.getPageNum() - 1) + 1;
|
||||||
sqlSbFinal.append(String.format("select * from ( select %s from %s", queryColumns + ",rownum rn", "(" + sqlSb + ") where rownum<=" + pageSize + " ) t2 where t2.rn >=" + offsetSize));
|
sqlSbFinal.append(String.format("select * from ( select %s from %s", queryColumns + ",rownum rn", "(" + sqlSb + ") where rownum<=" + pageSize + " ) t2 where t2.rn >=" + pageNum));
|
||||||
return sqlSbFinal.toString();
|
return sqlSbFinal.toString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,25 +48,46 @@ public class SqlserverServiceImpl extends DbBaseService {
|
|||||||
return tableColumnVo;
|
return tableColumnVo;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// /**
|
||||||
|
// * 获取分页查询的SQL(fetch next只适用SQL Server 2012及以上版本)
|
||||||
|
// *
|
||||||
|
// * @return 分页查询的SQL
|
||||||
|
// * @author 暮光:城中城
|
||||||
|
// * @since 2021年6月13日
|
||||||
|
// */
|
||||||
|
// @Override
|
||||||
|
// public String getQueryPageSql(DataViewParam dataViewParam) {
|
||||||
|
// String queryColumns = StringUtils.defaultIfBlank(dataViewParam.getRetainColumn(), "*");
|
||||||
|
// StringBuilder sqlSb = new StringBuilder();
|
||||||
|
// sqlSb.append(String.format("select %s from %s..%s", queryColumns, dataViewParam.getDbName(), dataViewParam.getTableName()));
|
||||||
|
// if (StringUtils.isNotBlank(dataViewParam.getCondition())) {
|
||||||
|
// sqlSb.append(String.format(" where %s", dataViewParam.getCondition()));
|
||||||
|
// }
|
||||||
|
// if (StringUtils.isNotBlank(dataViewParam.getOrderColumn()) && StringUtils.isNotBlank(dataViewParam.getOrderType())) {
|
||||||
|
// sqlSb.append(String.format(" order by %s %s", dataViewParam.getOrderColumn(), dataViewParam.getOrderType()));
|
||||||
|
// }
|
||||||
|
// sqlSb.append(String.format(" offset %s row fetch next %s rows only", dataViewParam.getOffset(), dataViewParam.getPageSize()));
|
||||||
|
// return sqlSb.toString();
|
||||||
|
// }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取分页查询的SQL
|
* 获取分页查询的SQL(兼容写法,支持SQL Server 2005及以上版本)
|
||||||
*
|
*
|
||||||
* @return 分页查询的SQL
|
* @return 分页查询的SQL
|
||||||
* @author 暮光:城中城
|
* @author diantu
|
||||||
* @since 2021年6月13日
|
* @since 2023年1月18日
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
public String getQueryPageSql(DataViewParam dataViewParam) {
|
public String getQueryPageSql(DataViewParam dataViewParam) {
|
||||||
String queryColumns = StringUtils.defaultIfBlank(dataViewParam.getRetainColumn(), "*");
|
String queryColumns = StringUtils.defaultIfBlank(dataViewParam.getRetainColumn(), "*");
|
||||||
|
Integer pageNum = dataViewParam.getPageNum();
|
||||||
|
Integer pageSize = dataViewParam.getPageSize();
|
||||||
|
Integer rownumber = (pageNum-1)*pageSize;
|
||||||
StringBuilder sqlSb = new StringBuilder();
|
StringBuilder sqlSb = new StringBuilder();
|
||||||
sqlSb.append(String.format("select %s from %s..%s", queryColumns, dataViewParam.getDbName(), dataViewParam.getTableName()));
|
sqlSb.append(String.format("select top %s * from (select row_number() OVER(order by %s %s) as rowid, %s from %s..%s )A where rowid> %s",pageSize,dataViewParam.getOrderColumn(), dataViewParam.getOrderType(), queryColumns, dataViewParam.getDbName(), dataViewParam.getTableName(),rownumber));
|
||||||
if (StringUtils.isNotBlank(dataViewParam.getCondition())) {
|
if (StringUtils.isNotBlank(dataViewParam.getCondition())) {
|
||||||
sqlSb.append(String.format(" where %s", dataViewParam.getCondition()));
|
sqlSb.append(String.format(" and %s", dataViewParam.getCondition()));
|
||||||
}
|
}
|
||||||
if (StringUtils.isNotBlank(dataViewParam.getOrderColumn()) && StringUtils.isNotBlank(dataViewParam.getOrderType())) {
|
|
||||||
sqlSb.append(String.format(" order by %s %s", dataViewParam.getOrderColumn(), dataViewParam.getOrderType()));
|
|
||||||
}
|
|
||||||
sqlSb.append(String.format(" offset %s row fetch next %s rows only", dataViewParam.getOffset(), dataViewParam.getPageSize()));
|
|
||||||
return sqlSb.toString();
|
return sqlSb.toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user