!10 sqlserver兼容性优化

Merge pull request !10 from diantu/master
This commit is contained in:
暮光:城中城
2023-01-18 04:03:31 +00:00
committed by Gitee
3 changed files with 39 additions and 18 deletions

View File

@@ -46,7 +46,7 @@
SELECT (
SELECT IS_IDENTITY FROM ${dbName}.SYS.ALL_COLUMNS
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
FROM ${dbName}..SYSCOLUMNS
LEFT JOIN PRIMARYINFO ON PRIMARYINFO.COLUMNNAME=NAME

View File

@@ -48,8 +48,8 @@ public class OracleServiceImpl extends DbBaseService {
}
StringBuilder sqlSbFinal = new StringBuilder();
Integer pageSize = dataViewParam.getPageSize() * dataViewParam.getPageNum();
Integer offsetSize = 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));
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 >=" + pageNum));
return sqlSbFinal.toString();
}
}

View File

@@ -22,15 +22,15 @@ import java.util.stream.Collectors;
*/
@Service
public class SqlserverServiceImpl extends DbBaseService {
@Resource
SqlserverDownloadService sqlserverDownloadService;
@Override
public DatabaseProductEnum getDatabaseProduct() {
return DatabaseProductEnum.SQLSERVER;
}
@Override
public TableColumnVo getTableColumnList(Long sourceId, String dbName, String tableName) {
TableColumnVo tableColumnVo = super.getTableColumnList(sourceId, dbName, tableName);
@@ -47,29 +47,50 @@ public class SqlserverServiceImpl extends DbBaseService {
}
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
* @author 暮光:城中城
* @since 2021年6月13
* @author diantu
* @since 2023年1月18
*/
@Override
public String getQueryPageSql(DataViewParam dataViewParam) {
String queryColumns = StringUtils.defaultIfBlank(dataViewParam.getRetainColumn(), "*");
Integer pageNum = dataViewParam.getPageNum();
Integer pageSize = dataViewParam.getPageSize();
Integer rownumber = (pageNum-1)*pageSize;
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())) {
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();
}
/**
* 获取查询总条数的SQL
*
@@ -85,7 +106,7 @@ public class SqlserverServiceImpl extends DbBaseService {
}
return sqlSb.toString();
}
/**
* 获取全量数据查询的SQL
*