Example usage for org.apache.ibatis.session RowBounds getLimit

List of usage examples for org.apache.ibatis.session RowBounds getLimit

Introduction

In this page you can find the example usage for org.apache.ibatis.session RowBounds getLimit.

Prototype

public int getLimit() 

Source Link

Usage

From source file:com.ewcms.common.mybatis.plugin.PaginationQueryPlugin.java

License:Open Source License

/**
 * ??//w  w  w . j a  va2 s  . c o  m
 * 
 * @param dialect 
 * @param rowBounds 
 * @return
 */
private boolean noPagination(LimitDialect dialect, RowBounds rowBounds) {
    return !(dialect.isSupports() && rowBounds.getLimit() > 0 && rowBounds.getLimit() < RowBounds.NO_ROW_LIMIT);
}

From source file:com.ewcms.common.mybatis.plugin.PaginationQueryPlugin.java

License:Open Source License

/**
 * ??{@link BoundSql}//from   w w  w .  j av  a 2s. co  m
 * 
 * @param BoundSql  
 * @param rowBounds 
 */
private void setPagination(BoundSql boundSql, RowBounds rowBounds) {
    String sql = dialect.limit(boundSql.getSql(), rowBounds.getOffset(), rowBounds.getLimit());
    MetaObject.forObject(boundSql).setValue("sql", sql);
    logger.debug("BoundSql sql is {}", boundSql.getSql());
}

From source file:com.github.ibole.infrastructure.persistence.db.mybatis.pagination.PaginationInterceptor.java

License:Apache License

@SuppressWarnings({ "rawtypes", "unchecked" })
public Object intercept(Invocation invocation) throws Throwable {
    Object[] queryArgs = invocation.getArgs();
    MappedStatement ms = (MappedStatement) queryArgs[MAPPED_STATEMENT_INDEX];
    Object parameter = queryArgs[PARAMETER_INDEX];
    final RowBounds oldRow = (RowBounds) queryArgs[ROWBOUNDS_INDEX];
    // the need for paging intercept.
    boolean interceptor = ms.getId().matches(sqlRegex);

    if (!interceptor) {
        return invocation.proceed();
    }//  w w  w  . ja  va 2  s  .c o  m

    final Executor executor = (Executor) invocation.getTarget();
    //obtain paging information.
    final PagingCriteria pageRequest = interceptor ? PagingParametersFinder.instance.findCriteria(parameter)
            : PagingCriteria.getDefaultCriteria();

    final RowBounds rowBounds = (interceptor) ? offsetPaging(oldRow, pageRequest) : oldRow;
    int offset = rowBounds.getOffset();
    int limit = rowBounds.getLimit();
    if (dialect.supportsLimit() && (offset != RowBounds.NO_ROW_OFFSET || limit != RowBounds.NO_ROW_LIMIT)) {
        BoundSql boundSql = ms.getBoundSql(parameter);
        String sql = boundSql.getSql().trim();
        Integer count = getCount(fileterSql(sql, pageRequest), executor, ms, rowBounds, boundSql, parameter,
                dialect);
        String newSql = sortSql(fileterSql(sql, pageRequest), pageRequest);
        if (dialect.supportsLimitOffset()) {
            newSql = dialect.getLimitString(newSql, offset, limit);
            offset = RowBounds.NO_ROW_OFFSET;
        } else {
            newSql = dialect.getLimitString(newSql, 0, limit);
        }
        if (logger.isDebugEnabled()) {
            logger.debug("Pagination sql is :[" + newSql + "]");
        }
        limit = RowBounds.NO_ROW_LIMIT;
        queryArgs[ROWBOUNDS_INDEX] = new RowBounds(offset, limit);
        BoundSql newBoundSql = copyFromBoundSql(ms, boundSql, newSql);
        MappedStatement newMs = copyFromMappedStatement(ms, new BoundSqlSqlSource(newBoundSql));
        queryArgs[MAPPED_STATEMENT_INDEX] = newMs;
        return new PageList((List) invocation.proceed(),
                new Pager(pageRequest.getPageNumber(), pageRequest.getPageSize(), count));
    }

    return invocation.proceed();

}

From source file:com.github.pagehelper.dialect.rowbounds.Db2RowBoundsDialect.java

License:Open Source License

@Override
public String getPageSql(String sql, RowBounds rowBounds, CacheKey pageKey) {
    int startRow = rowBounds.getOffset() + 1;
    int endRow = rowBounds.getOffset() + rowBounds.getLimit();
    StringBuilder sqlBuilder = new StringBuilder(sql.length() + 120);
    sqlBuilder.append("SELECT * FROM (SELECT TMP_PAGE.*,ROWNUMBER() OVER() AS ROW_ID FROM ( ");
    sqlBuilder.append(sql);//from w w w.j a  v a  2s .c om
    sqlBuilder.append(" ) AS TMP_PAGE) WHERE ROW_ID BETWEEN ");
    sqlBuilder.append(startRow);
    sqlBuilder.append(" AND ");
    sqlBuilder.append(endRow);
    pageKey.update(startRow);
    pageKey.update(endRow);
    return sqlBuilder.toString();
}

From source file:com.github.pagehelper.dialect.rowbounds.HsqldbRowBoundsDialect.java

License:Open Source License

@Override
public String getPageSql(String sql, RowBounds rowBounds, CacheKey pageKey) {
    StringBuilder sqlBuilder = new StringBuilder(sql.length() + 20);
    sqlBuilder.append(sql);/*ww  w .j  a v a 2 s.c  o  m*/
    if (rowBounds.getLimit() > 0) {
        sqlBuilder.append(" LIMIT ");
        sqlBuilder.append(rowBounds.getLimit());
        pageKey.update(rowBounds.getLimit());
    }
    if (rowBounds.getOffset() > 0) {
        sqlBuilder.append(" OFFSET ");
        sqlBuilder.append(rowBounds.getOffset());
        pageKey.update(rowBounds.getOffset());
    }
    return sqlBuilder.toString();
}

From source file:com.github.pagehelper.dialect.rowbounds.InformixRowBoundsDialect.java

License:Open Source License

@Override
public String getPageSql(String sql, RowBounds rowBounds, CacheKey pageKey) {
    StringBuilder sqlBuilder = new StringBuilder(sql.length() + 40);
    sqlBuilder.append("SELECT ");
    if (rowBounds.getOffset() > 0) {
        sqlBuilder.append(" SKIP ");
        sqlBuilder.append(rowBounds.getOffset());
        pageKey.update(rowBounds.getOffset());
    }//w w w . j  a v a 2s  .co  m
    if (rowBounds.getLimit() > 0) {
        sqlBuilder.append(" FIRST ");
        sqlBuilder.append(rowBounds.getLimit());
        pageKey.update(rowBounds.getLimit());
    }
    sqlBuilder.append(" * FROM ( ");
    sqlBuilder.append(sql);
    sqlBuilder.append(" ) TEMP_T");
    return sqlBuilder.toString();
}

From source file:com.github.pagehelper.dialect.rowbounds.MySqlRowBoundsDialect.java

License:Open Source License

@Override
public String getPageSql(String sql, RowBounds rowBounds, CacheKey pageKey) {
    StringBuilder sqlBuilder = new StringBuilder(sql.length() + 14);
    sqlBuilder.append(sql);/*  w ww.  j a  va2  s  .  c  o m*/
    if (rowBounds.getOffset() == 0) {
        sqlBuilder.append(" LIMIT ");
        sqlBuilder.append(rowBounds.getLimit());
    } else {
        sqlBuilder.append(" LIMIT ");
        sqlBuilder.append(rowBounds.getOffset());
        sqlBuilder.append(",");
        sqlBuilder.append(rowBounds.getLimit());
        pageKey.update(rowBounds.getOffset());
    }
    pageKey.update(rowBounds.getLimit());
    return sqlBuilder.toString();
}

From source file:com.github.pagehelper.dialect.rowbounds.OracleRowBoundsDialect.java

License:Open Source License

@Override
public String getPageSql(String sql, RowBounds rowBounds, CacheKey pageKey) {
    int startRow = rowBounds.getOffset();
    int endRow = rowBounds.getOffset() + rowBounds.getLimit();
    StringBuilder sqlBuilder = new StringBuilder(sql.length() + 120);
    if (startRow > 0) {
        sqlBuilder.append("SELECT * FROM ( ");
    }//w w w  . j a va2s .  c om
    if (endRow > 0) {
        sqlBuilder.append(" SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( ");
    }
    sqlBuilder.append(sql);
    if (endRow > 0) {
        sqlBuilder.append(" ) TMP_PAGE WHERE ROWNUM <= ");
        sqlBuilder.append(endRow);
        pageKey.update(endRow);
    }
    if (startRow > 0) {
        sqlBuilder.append(" ) WHERE ROW_ID > ");
        sqlBuilder.append(startRow);
        pageKey.update(startRow);
    }
    return sqlBuilder.toString();
}

From source file:com.github.pagehelper.dialect.rowbounds.SqlServer2012RowBoundsDialect.java

License:Open Source License

@Override
public String getPageSql(String sql, RowBounds rowBounds, CacheKey pageKey) {
    StringBuilder sqlBuilder = new StringBuilder(sql.length() + 14);
    sqlBuilder.append(sql);/*from  w ww.  ja v a  2 s  .  com*/
    if (rowBounds.getOffset() > 0) {
        sqlBuilder.append(" OFFSET ");
        sqlBuilder.append(rowBounds.getOffset());
        sqlBuilder.append(" ROWS ");
        pageKey.update(rowBounds.getOffset());
    }
    if (rowBounds.getLimit() > 0) {
        sqlBuilder.append(" FETCH NEXT ");
        sqlBuilder.append(rowBounds.getLimit());
        sqlBuilder.append(" ROWS ONLY");
        pageKey.update(rowBounds.getLimit());
    }
    return sqlBuilder.toString();
}

From source file:com.github.pagehelper.dialect.rowbounds.SqlServerRowBoundsDialect.java

License:Open Source License

@Override
public String getPageSql(String sql, RowBounds rowBounds, CacheKey pageKey) {
    //?pageKey// w  ww  .j  a v a2  s  .c o  m
    pageKey.update(rowBounds.getOffset());
    pageKey.update(rowBounds.getLimit());
    sql = sql.replaceAll("((?i)with\\s*\\(nolock\\))", WITHNOLOCK);
    sql = pageSql.convertToPageSql(sql, null, null);
    sql = sql.replaceAll(WITHNOLOCK, " with(nolock)");
    sql = sql.replace(String.valueOf(Long.MIN_VALUE), String.valueOf(rowBounds.getOffset()));
    sql = sql.replace(String.valueOf(Long.MAX_VALUE), String.valueOf(rowBounds.getLimit()));
    return sql;
}