List of usage examples for org.apache.ibatis.mapping BoundSql getSql
public String getSql()
From source file:com.ewcms.common.mybatis.plugin.PaginationQueryPlugin.java
License:Open Source License
/** * ??{@link BoundSql}/*from w w w . java2 s .c o 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.funtl.framework.smoke.core.commons.persistence.interceptor.PaginationInterceptor.java
License:Apache License
@Override public Object intercept(Invocation invocation) throws Throwable { final MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; // //?SQL //// if (mappedStatement.getId().matches(_SQL_PATTERN)) { // if (StringUtils.indexOfIgnoreCase(mappedStatement.getId(), _SQL_PATTERN) != -1) { Object parameter = invocation.getArgs()[1]; BoundSql boundSql = mappedStatement.getBoundSql(parameter); Object parameterObject = boundSql.getParameterObject(); //??/*from w w w .ja v a 2 s . com*/ Page<Object> page = null; if (parameterObject != null) { page = convertParameter(parameterObject, page); } // if (page != null && page.getPageSize() != -1) { if (StringUtils.isBlank(boundSql.getSql())) { return null; } String originalSql = boundSql.getSql().trim(); // page.setCount(SQLHelper.getCount(originalSql, null, mappedStatement, parameterObject, boundSql, log)); // ?? String pageSql = SQLHelper.generatePageSql(originalSql, page, DIALECT); // if (log.isDebugEnabled()) { // log.debug("PAGE SQL:" + StringUtils.replace(pageSql, "\n", "")); // } invocation.getArgs()[2] = new RowBounds(RowBounds.NO_ROW_OFFSET, RowBounds.NO_ROW_LIMIT); BoundSql newBoundSql = new BoundSql(mappedStatement.getConfiguration(), pageSql, boundSql.getParameterMappings(), boundSql.getParameterObject()); //MyBatis foreach ? start if (Reflections.getFieldValue(boundSql, "metaParameters") != null) { MetaObject mo = (MetaObject) Reflections.getFieldValue(boundSql, "metaParameters"); Reflections.setFieldValue(newBoundSql, "metaParameters", mo); } //MyBatis foreach ? end MappedStatement newMs = copyFromMappedStatement(mappedStatement, new BoundSqlSqlSource(newBoundSql)); invocation.getArgs()[0] = newMs; } // } return invocation.proceed(); }
From source file:com.funtl.framework.smoke.core.commons.persistence.interceptor.PreparePaginationInterceptor.java
License:Apache License
@Override public Object intercept(Invocation ivk) throws Throwable { if (ivk.getTarget().getClass().isAssignableFrom(RoutingStatementHandler.class)) { final RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget(); final BaseStatementHandler delegate = (BaseStatementHandler) Reflections.getFieldValue(statementHandler, DELEGATE);//from w w w . ja v a 2 s . c o m final MappedStatement mappedStatement = (MappedStatement) Reflections.getFieldValue(delegate, MAPPED_STATEMENT); // //?SQL //// if (mappedStatement.getId().matches(_SQL_PATTERN)) { // if (StringUtils.indexOfIgnoreCase(mappedStatement.getId(), _SQL_PATTERN) != -1) { BoundSql boundSql = delegate.getBoundSql(); //SQL<select>parameterType??Mapper??,?? Object parameterObject = boundSql.getParameterObject(); if (parameterObject == null) { log.error("?"); throw new NullPointerException("parameterObject?"); } else { final Connection connection = (Connection) ivk.getArgs()[0]; final String sql = boundSql.getSql(); // final int count = SQLHelper.getCount(sql, connection, mappedStatement, parameterObject, boundSql, log); Page<Object> page = null; page = convertParameter(parameterObject, page); page.setCount(count); String pagingSql = SQLHelper.generatePageSql(sql, page, DIALECT); if (log.isDebugEnabled()) { log.debug("PAGE SQL:" + pagingSql); } //sql???BoundSql. Reflections.setFieldValue(boundSql, "sql", pagingSql); } if (boundSql.getSql() == null || "".equals(boundSql.getSql())) { return null; } } // } return ivk.proceed(); }
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(); }/*from w ww. jav a2s.co 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.AbstractDialect.java
License:Open Source License
@Override public String getCountSql(MappedStatement ms, BoundSql boundSql, Object parameterObject, RowBounds rowBounds, CacheKey countKey) {// ww w . j a va2 s .com return countSqlParser.getSmartCountSql(boundSql.getSql()); }
From source file:com.github.pagehelper.dialect.AbstractHelperDialect.java
License:Open Source License
@Override public String getPageSql(MappedStatement ms, BoundSql boundSql, Object parameterObject, RowBounds rowBounds, CacheKey pageKey) {//from w w w . j a va 2s .c o m String sql = boundSql.getSql(); Page page = getLocalPage(); return getPageSql(sql, page, pageKey); }
From source file:com.github.pagehelper.dialect.AbstractRowBoundsDialect.java
License:Open Source License
@Override public String getPageSql(MappedStatement ms, BoundSql boundSql, Object parameterObject, RowBounds rowBounds, CacheKey pageKey) {//from w ww . ja v a 2 s. c o m String sql = boundSql.getSql(); return getPageSql(sql, rowBounds, pageKey); }
From source file:com.github.pagehelper.dialect.helper.SqlServerDialect.java
License:Open Source License
@Override public String getCountSql(MappedStatement ms, BoundSql boundSql, Object parameterObject, RowBounds rowBounds, CacheKey countKey) {/*from w w w . j a v a2 s.c o m*/ String sql = boundSql.getSql(); String cacheSql = CACHE_COUNTSQL.get(sql); if (cacheSql != null) { return cacheSql; } else { cacheSql = sql; } cacheSql = cacheSql.replaceAll("((?i)with\\s*\\(nolock\\))", WITHNOLOCK); cacheSql = countSqlParser.getSmartCountSql(cacheSql); cacheSql = cacheSql.replaceAll(WITHNOLOCK, " with(nolock)"); CACHE_COUNTSQL.put(sql, cacheSql); return cacheSql; }
From source file:com.github.pagehelper.dialect.rowbounds.SqlServerRowBoundsDialect.java
License:Open Source License
@Override public String getCountSql(MappedStatement ms, BoundSql boundSql, Object parameterObject, RowBounds rowBounds, CacheKey countKey) {//from w w w . ja v a2 s . c om String sql = boundSql.getSql(); sql = sql.replaceAll("((?i)with\\s*\\(nolock\\))", WITHNOLOCK); sql = countSqlParser.getSmartCountSql(sql); sql = sql.replaceAll(WITHNOLOCK, " with(nolock)"); return sql; }
From source file:com.glaf.core.entity.mybatis.MyBatisOffsetLimitInterceptor.java
License:Apache License
void processIntercept(final Object[] queryArgs) { // queryArgs = query(MappedStatement ms, Object parameter, RowBounds // rowBounds, ResultHandler resultHandler) MappedStatement ms = (MappedStatement) queryArgs[MAPPED_STATEMENT_INDEX]; Object parameter = queryArgs[PARAMETER_INDEX]; final RowBounds rowBounds = (RowBounds) queryArgs[ROWBOUNDS_INDEX]; int offset = rowBounds.getOffset(); int limit = rowBounds.getLimit(); String currentSystemName = Environment.getCurrentSystemName(); Dialect dialect = null;/* ww w . j a v a 2 s. c o m*/ if (conf.getBoolean("useDatabaseDialect", true)) { if (dialects.isEmpty()) { Map<String, Dialect> rows = DBConfiguration.getDatabaseDialects(); Iterator<Entry<String, Dialect>> iterator = rows.entrySet().iterator(); while (iterator.hasNext()) { Entry<String, Dialect> entry = iterator.next(); String key = (String) entry.getKey(); Dialect d = entry.getValue(); dialects.put(key, d); } } logger.debug("currentSystemName:" + currentSystemName); dialect = dialects.get(currentSystemName); } if (dialect != null && dialect.supportsLimit() && (offset != RowBounds.NO_ROW_OFFSET || limit != RowBounds.NO_ROW_LIMIT)) { logger.debug("dialect:" + dialect.getClass().getName()); BoundSql boundSql = ms.getBoundSql(parameter); String sql = boundSql.getSql().trim(); if (dialect.supportsLimit()) { sql = dialect.getLimitString(sql, offset, limit); offset = RowBounds.NO_ROW_OFFSET; } else { sql = dialect.getLimitString(sql, 0, limit); } limit = RowBounds.NO_ROW_LIMIT; queryArgs[ROWBOUNDS_INDEX] = new RowBounds(offset, limit); BoundSql newBoundSql = copyFromBoundSql(ms, boundSql, sql); MappedStatement newMs = copyFromMappedStatement(ms, new BoundSqlSqlSource(newBoundSql)); queryArgs[MAPPED_STATEMENT_INDEX] = newMs; if (logger.isDebugEnabled()) { String sql2 = newBoundSql.getSql(); SQLFormatter f = new SQLFormatter(); sql2 = f.format(sql2); logger.debug("limit sql:\n" + sql2); } } }