Skip to content

Commit 614cc0a

Browse files
authored
修复oracle分页获取时无法获取除第一页以外的数据
原来的getLimitString的方法所生成的语句oracle并无法正确获取,因为oracle的between并不支持获取除1开始以外的数据 也就是 无法获取到除了第一页以外的数据
1 parent 2303271 commit 614cc0a

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

APIJSONORM/src/main/java/apijson/orm/AbstractSQLConfig.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3946,13 +3946,20 @@ public static String getSQL(AbstractSQLConfig config) throws Exception {
39463946
&& StringUtil.isNotEmpty(config.getGroup(),true)){
39473947
return explain + "SELECT count(*) FROM (SELECT " + (config.getCache() == JSONRequest.CACHE_RAM ? "SQL_NO_CACHE " : "") + column + " FROM " + getConditionString(column, tablePath, config) + ") " + config.getLimitString();
39483948
}
3949-
return explain + "SELECT * FROM (SELECT " + (config.getCache() == JSONRequest.CACHE_RAM ? "SQL_NO_CACHE " : "") + column + " FROM " + getConditionString(column, tablePath, config) + ") " + config.getLimitString();
3949+
String sql = "SELECT " + (config.getCache() == JSONRequest.CACHE_RAM ? "SQL_NO_CACHE " : "") + column + " FROM " + getConditionString(column, tablePath, config);
3950+
return explain + config.getOraclePageSql(config, sql);
39503951
}
3951-
39523952
return explain + "SELECT " + (config.getCache() == JSONRequest.CACHE_RAM ? "SQL_NO_CACHE " : "") + column + " FROM " + getConditionString(column, tablePath, config) + config.getLimitString();
39533953
}
3954-
}
3954+
}
39553955

3956+
private String getOraclePageSql(AbstractSQLConfig config, String sql) {
3957+
int offset = getOffset(config.getPage(), config.getCount());
3958+
String pageSql;
3959+
pageSql = "SELECT * FROM (SELECT t.*,ROWNUM RN FROM (" + sql + ") t WHERE ROWNUM <= " + (offset + count) + ") WHERE RN > " + offset;
3960+
return pageSql;
3961+
}
3962+
39563963
/**获取条件SQL字符串
39573964
* @param column
39583965
* @param table

0 commit comments

Comments
 (0)