List of usage examples for org.apache.ibatis.session RowBounds getLimit
public int getLimit()
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; }