List of usage examples for org.apache.ibatis.cache CacheKey update
public void update(Object object)
From source file:com.badminton.interceptors.mySqlHelper.pagehelper.util.SqlUtil.java
License:Open Source License
/** * // ww w. j a va 2 s . c om * * @param invocation * @return * @throws Throwable */ public Object doIntercept(Invocation invocation) throws Throwable { //?? Object[] args = invocation.getArgs(); MappedStatement ms = (MappedStatement) args[0]; Object parameterObject = args[1]; RowBounds rowBounds = (RowBounds) args[2]; List resultList; if (autoDialect) { lock.lock(); try { if (autoDialect) { autoDialect = false; this.dialect = getDialect(ms); } } finally { lock.unlock(); } } Dialect runtimeDialect = dialect; if (autoRuntimeDialect) { runtimeDialect = getDialect(ms); } //???? if (!runtimeDialect.skip(ms, parameterObject, rowBounds)) { ResultHandler resultHandler = (ResultHandler) args[3]; //? Executor executor = (Executor) invocation.getTarget(); BoundSql boundSql = ms.getBoundSql(parameterObject); //????? Map<String, Object> additionalParameters = (Map<String, Object>) additionalParametersField .get(boundSql); //?? count if (runtimeDialect.beforeCount(ms, parameterObject, rowBounds)) { // count key CacheKey countKey = executor.createCacheKey(ms, parameterObject, RowBounds.DEFAULT, boundSql); countKey.update("_Count"); MappedStatement countMs = msCountMap.get(countKey); if (countMs == null) { //?? ms Long ms countMs = MSUtils.newCountMappedStatement(ms); msCountMap.put(countKey, countMs); } //? count sql String countSql = runtimeDialect.getCountSql(ms, boundSql, parameterObject, rowBounds, countKey); BoundSql countBoundSql = new BoundSql(ms.getConfiguration(), countSql, boundSql.getParameterMappings(), parameterObject); //? SQL ???? BoundSql for (String key : additionalParameters.keySet()) { countBoundSql.setAdditionalParameter(key, additionalParameters.get(key)); } // count Object countResultList = executor.query(countMs, parameterObject, RowBounds.DEFAULT, resultHandler, countKey, countBoundSql); Long count = (Long) ((List) countResultList).get(0); //? runtimeDialect.afterCount(count, parameterObject, rowBounds); if (count == 0L) { // 0 return runtimeDialect.afterPage(new ArrayList(), parameterObject, rowBounds); } } //?? if (runtimeDialect.beforePage(ms, parameterObject, rowBounds)) { //? key CacheKey pageKey = executor.createCacheKey(ms, parameterObject, rowBounds, boundSql); //?? parameterObject = runtimeDialect.processParameterObject(ms, parameterObject, boundSql, pageKey); //? sql String pageSql = runtimeDialect.getPageSql(ms, boundSql, parameterObject, rowBounds, pageKey); BoundSql pageBoundSql = new BoundSql(ms.getConfiguration(), pageSql, boundSql.getParameterMappings(), parameterObject); //?? for (String key : additionalParameters.keySet()) { pageBoundSql.setAdditionalParameter(key, additionalParameters.get(key)); } // resultList = executor.query(ms, parameterObject, RowBounds.DEFAULT, resultHandler, pageKey, pageBoundSql); } else { resultList = new ArrayList(); } } else { args[2] = RowBounds.DEFAULT; resultList = (List) invocation.proceed(); } // return runtimeDialect.afterPage(resultList, parameterObject, rowBounds); }
From source file:com.github.pagehelper.dialect.helper.Db2Dialect.java
License:Open Source License
@Override public String getPageSql(String sql, Page page, CacheKey pageKey) { 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 ww.j a v a 2 s . c o m sqlBuilder.append(" ) AS TMP_PAGE) WHERE ROW_ID BETWEEN "); sqlBuilder.append(page.getStartRow() + 1); sqlBuilder.append(" AND "); sqlBuilder.append(page.getEndRow()); pageKey.update(page.getStartRow() + 1); pageKey.update(page.getEndRow()); return sqlBuilder.toString(); }
From source file:com.github.pagehelper.dialect.helper.HsqldbDialect.java
License:Open Source License
@Override public String getPageSql(String sql, Page page, CacheKey pageKey) { StringBuilder sqlBuilder = new StringBuilder(sql.length() + 20); sqlBuilder.append(sql);//w w w .ja va 2s .c om if (page.getPageSize() > 0) { sqlBuilder.append(" LIMIT "); sqlBuilder.append(page.getPageSize()); pageKey.update(page.getPageSize()); } if (page.getStartRow() > 0) { sqlBuilder.append(" OFFSET "); sqlBuilder.append(page.getStartRow()); pageKey.update(page.getStartRow()); } return sqlBuilder.toString(); }
From source file:com.github.pagehelper.dialect.helper.InformixDialect.java
License:Open Source License
@Override public String getPageSql(String sql, Page page, CacheKey pageKey) { StringBuilder sqlBuilder = new StringBuilder(sql.length() + 40); sqlBuilder.append("SELECT "); if (page.getStartRow() > 0) { sqlBuilder.append(" SKIP "); sqlBuilder.append(page.getStartRow()); pageKey.update(page.getStartRow()); }/*from w w w.j a v a 2 s .co m*/ if (page.getPageSize() > 0) { sqlBuilder.append(" FIRST "); sqlBuilder.append(page.getPageSize()); pageKey.update(page.getPageSize()); } sqlBuilder.append(" * FROM ( "); sqlBuilder.append(sql); sqlBuilder.append(" ) TEMP_T"); return sqlBuilder.toString(); }
From source file:com.github.pagehelper.dialect.helper.MySqlDialect.java
License:Open Source License
@Override public String getPageSql(String sql, Page page, CacheKey pageKey) { StringBuilder sqlBuilder = new StringBuilder(sql.length() + 14); sqlBuilder.append(sql);/*w ww. j a va 2 s . c om*/ if (page.getStartRow() == 0) { sqlBuilder.append(" LIMIT "); sqlBuilder.append(page.getPageSize()); } else { sqlBuilder.append(" LIMIT "); sqlBuilder.append(page.getStartRow()); sqlBuilder.append(","); sqlBuilder.append(page.getPageSize()); pageKey.update(page.getStartRow()); } pageKey.update(page.getPageSize()); return sqlBuilder.toString(); }
From source file:com.github.pagehelper.dialect.helper.OracleDialect.java
License:Open Source License
@Override public String getPageSql(String sql, Page page, CacheKey pageKey) { StringBuilder sqlBuilder = new StringBuilder(sql.length() + 120); if (page.getStartRow() > 0) { sqlBuilder.append("SELECT * FROM ( "); }//from w ww. j ava2 s.c o m if (page.getEndRow() > 0) { sqlBuilder.append(" SELECT TMP_PAGE.*, ROWNUM ROW_ID FROM ( "); } sqlBuilder.append(sql); if (page.getEndRow() > 0) { sqlBuilder.append(" ) TMP_PAGE WHERE ROWNUM <= "); sqlBuilder.append(page.getEndRow()); pageKey.update(page.getEndRow()); } if (page.getStartRow() > 0) { sqlBuilder.append(" ) WHERE ROW_ID > "); sqlBuilder.append(page.getStartRow()); pageKey.update(page.getStartRow()); } return sqlBuilder.toString(); }
From source file:com.github.pagehelper.dialect.helper.SqlServer2012Dialect.java
License:Open Source License
@Override public String getPageSql(String sql, Page page, CacheKey pageKey) { StringBuilder sqlBuilder = new StringBuilder(sql.length() + 14); sqlBuilder.append(sql);/*from w ww . j av a 2 s .com*/ if (page.getStartRow() > 0) { sqlBuilder.append(" OFFSET "); sqlBuilder.append(page.getStartRow()); sqlBuilder.append(" ROWS "); pageKey.update(page.getStartRow()); } if (page.getPageSize() > 0) { sqlBuilder.append(" FETCH NEXT "); sqlBuilder.append(page.getPageSize()); sqlBuilder.append(" ROWS ONLY"); pageKey.update(page.getPageSize()); } return sqlBuilder.toString(); }
From source file:com.github.pagehelper.dialect.helper.SqlServerDialect.java
License:Open Source License
@Override public String getPageSql(String sql, Page page, CacheKey pageKey) { //?pageKey/*from ww w .j a va2 s . co m*/ pageKey.update(page.getStartRow()); pageKey.update(page.getPageSize()); String cacheSql = CACHE_PAGESQL.get(sql); if (cacheSql == null) { cacheSql = sql; cacheSql = cacheSql.replaceAll("((?i)with\\s*\\(nolock\\))", WITHNOLOCK); cacheSql = pageSql.convertToPageSql(cacheSql, null, null); cacheSql = cacheSql.replaceAll(WITHNOLOCK, " with(nolock)"); CACHE_PAGESQL.put(sql, cacheSql); } cacheSql = cacheSql.replace(String.valueOf(Long.MIN_VALUE), String.valueOf(page.getStartRow())); cacheSql = cacheSql.replace(String.valueOf(Long.MAX_VALUE), String.valueOf(page.getPageSize())); return cacheSql; }
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 ww. j a va 2 s .com*/ 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);/* w ww. ja v a 2s . com*/ 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(); }