fixed github issues/119
@@ -71,37 +71,7 @@ public class CachePaginationInterceptor extends PaginationInterceptor implements
Object target = invocation.getTarget();
if (target instanceof StatementHandler) {
- StatementHandler statementHandler = (StatementHandler) PluginUtils.realTarget(invocation.getTarget());
- MetaObject metaStatementHandler = SystemMetaObject.forObject(statementHandler);
- RowBounds rowBounds = (RowBounds) metaStatementHandler.getValue("delegate.rowBounds");
-
- if (rowBounds == null || rowBounds == RowBounds.DEFAULT) {
- return invocation.proceed();
- }
- BoundSql boundSql = (BoundSql) metaStatementHandler.getValue("delegate.boundSql");
- String originalSql = boundSql.getSql();
- Connection connection = (Connection) invocation.getArgs()[0];
- DBType dbType = StringUtils.isNotEmpty(dialectType) ? DBType.getDBType(dialectType) : JdbcUtils.getDbType(connection.getMetaData().getURL());
- if (rowBounds instanceof Pagination) {
- Pagination page = (Pagination) rowBounds;
- boolean orderBy = true;
- if (page.isSearchCount()) {
- String tempSql = originalSql.replaceAll("(?i)ORDER[\\s]+BY", "ORDER BY");
- int orderByIndex = tempSql.toUpperCase().lastIndexOf("ORDER BY");
- if (orderByIndex <= -1) {
- orderBy = false;
- }
- }
- String buildSql = SqlUtils.concatOrderBy(originalSql, page, orderBy);
- originalSql = DialectFactory.buildPaginationSql(page, buildSql, dbType, dialectClazz);
- } else {
- // support physical Pagination for RowBounds
- originalSql = DialectFactory.buildPaginationSql(rowBounds, originalSql, dbType, dialectClazz);
- }
-
- metaStatementHandler.setValue("delegate.boundSql.sql", originalSql);
- metaStatementHandler.setValue("delegate.rowBounds.offset", RowBounds.NO_ROW_OFFSET);
- metaStatementHandler.setValue("delegate.rowBounds.limit", RowBounds.NO_ROW_LIMIT);
+ return super.intercept(invocation);
} else {
RowBounds rowBounds = (RowBounds) invocation.getArgs()[2];
if (rowBounds == null || rowBounds == RowBounds.DEFAULT) {
