List of usage examples for org.apache.ibatis.mapping BoundSql BoundSql
public BoundSql(Configuration configuration, String sql, List<ParameterMapping> parameterMappings,
Object parameterObject)
From source file:com.appleframework.orm.mybatis.pagehelper.sqlsource.PageProviderSqlSource.java
License:Open Source License
@Override protected BoundSql getCountBoundSql(Object parameterObject) { BoundSql boundSql;// w w w. j a v a 2s. c o m SqlSource sqlSource = createSqlSource(parameterObject); boundSql = sqlSource.getBoundSql(parameterObject); return new BoundSql(configuration, localParser.get().getCountSql(boundSql.getSql()), boundSql.getParameterMappings(), parameterObject); }
From source file:com.appleframework.orm.mybatis.pagehelper.sqlsource.PageProviderSqlSource.java
License:Open Source License
@SuppressWarnings("rawtypes") @Override/*w w w . ja v a2 s .c o m*/ protected BoundSql getPageBoundSql(Object parameterObject) { BoundSql boundSql; if (parameterObject instanceof Map && ((Map) parameterObject).containsKey(PROVIDER_OBJECT)) { SqlSource sqlSource = createSqlSource(((Map) parameterObject).get(PROVIDER_OBJECT)); boundSql = sqlSource.getBoundSql(((Map) parameterObject).get(PROVIDER_OBJECT)); } else { SqlSource sqlSource = createSqlSource(parameterObject); boundSql = sqlSource.getBoundSql(parameterObject); } return new BoundSql(configuration, localParser.get().getPageSql(boundSql.getSql()), localParser.get().getPageParameterMapping(configuration, boundSql), parameterObject); }
From source file:com.badminton.interceptors.mySqlHelper.pagehelper.util.SqlUtil.java
License:Open Source License
/** * /*from ww w. ja va 2 s .c o m*/ * * @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.beginner.core.page.PagePlugin.java
License:Apache License
/** * ?//www .ja v a2s .co m */ public Object intercept(Invocation ivk) throws Throwable { if (ivk.getTarget() instanceof RoutingStatementHandler) { RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget(); BaseStatementHandler delegate = (BaseStatementHandler) ReflectHelper .getValueByFieldName(statementHandler, "delegate"); MappedStatement mappedStatement = (MappedStatement) ReflectHelper.getValueByFieldName(delegate, "mappedStatement"); //?SQL if (mappedStatement.getId().matches(mappedStatementId)) { BoundSql boundSql = delegate.getBoundSql(); //SQL<select>parameterType??Mapper??,?? Object parameterObject = boundSql.getParameterObject(); if (parameterObject == null) { throw new NullPointerException("parameterObject?"); } else { Connection connection = (Connection) ivk.getArgs()[0]; String sql = boundSql.getSql(); // String countSql = "SELECT COUNT(0) FROM (" + sql + ") tmp_count"; PreparedStatement countStmt = connection.prepareStatement(countSql); BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(), countSql, boundSql.getParameterMappings(), parameterObject); setParameters(countStmt, mappedStatement, countBS, parameterObject); ResultSet rs = countStmt.executeQuery(); int count = 0; if (rs.next()) { count = rs.getInt(1); } rs.close(); countStmt.close(); Page page = null; if (parameterObject instanceof Page) { //?Page page = (Page) parameterObject; page.setEntityOrField(true); page.setTotalResult(count); } else { //??Page Field pageField = ReflectHelper.getFieldByFieldName(parameterObject, "page"); if (pageField != null) { page = (Page) ReflectHelper.getValueByFieldName(parameterObject, "page"); if (page == null) page = new Page(); page.setEntityOrField(false); page.setTotalResult(count); //?? ReflectHelper.setValueByFieldName(parameterObject, "page", page); } else { throw new NoSuchFieldException( parameterObject.getClass().getName() + "? page ?"); } } String pageSql = generatePageSql(sql, page); //sql???BoundSql. ReflectHelper.setValueByFieldName(boundSql, "sql", pageSql); } } } return ivk.proceed(); }
From source file:com.bsb.cms.commons.page.interceptor.PaginationInterceptor.java
License:Open Source License
/** * ?BoundSql/* w w w. j av a 2 s. c om*/ */ private BoundSql copyFromBoundSql(MappedStatement ms, BoundSql boundSql, String sql) { BoundSql newBoundSql = new BoundSql(ms.getConfiguration(), sql, boundSql.getParameterMappings(), boundSql.getParameterObject()); for (ParameterMapping mapping : boundSql.getParameterMappings()) { String prop = mapping.getProperty(); if (boundSql.hasAdditionalParameter(prop)) { newBoundSql.setAdditionalParameter(prop, boundSql.getAdditionalParameter(prop)); } } return newBoundSql; }
From source file:com.eryansky.common.orm.mybatis.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(); //??//ww w .j a v a 2 s .c om 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(); if (log.isDebugEnabled()) { log.debug("SQL:" + originalSql); } // page.setTotalCount( SQLHelper.getCount(originalSql, null, mappedStatement, parameterObject, boundSql, log)); Dialect dialect = DIALECT; //? String dbName = convertDbNameParameter(parameterObject); if (StringUtils.isNotBlank(dbName)) { dialect = getDialect(dbName); } // ?? 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()); MappedStatement newMs = copyFromMappedStatement(mappedStatement, new BoundSqlSqlSource(newBoundSql)); invocation.getArgs()[0] = newMs; } // } return invocation.proceed(); }
From source file:com.eryansky.common.orm.mybatis.interceptor.SQLHelper.java
License:Apache License
/** * /*from w ww . ja v a 2 s . c om*/ * @param sql SQL? * @param connection ? * @param mappedStatement mapped * @param parameterObject ? * @param boundSql boundSql * @return * @throws java.sql.SQLException sql */ public static int getCount(final String sql, final Connection connection, final MappedStatement mappedStatement, final Object parameterObject, final BoundSql boundSql, Log log) throws SQLException { final String countSql = "select count(1) from (" + sql + ") tmp_count"; // final String countSql = "select count(1) " + removeSelect(removeOrders(sql)); Connection conn = connection; PreparedStatement ps = null; ResultSet rs = null; try { if (log.isDebugEnabled()) { log.debug("COUNT SQL: " + StringUtils.replaceEach(countSql, new String[] { "\n", "\t" }, new String[] { " ", " " })); } if (conn == null) { conn = mappedStatement.getConfiguration().getEnvironment().getDataSource().getConnection(); } ps = conn.prepareStatement(countSql); BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(), countSql, boundSql.getParameterMappings(), parameterObject); SQLHelper.setParameters(ps, mappedStatement, countBS, parameterObject); rs = ps.executeQuery(); int count = 0; if (rs.next()) { count = rs.getInt(1); } return count; } finally { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } }
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(); //??// w w w .j a va2 s. c om 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.SQLHelper.java
License:Apache License
/** * //from w w w .ja va 2 s. c o m * * @param sql SQL? * @param connection ? * @param mappedStatement mapped * @param parameterObject ? * @param boundSql boundSql * @return * @throws SQLException sql */ public static int getCount(final String sql, final Connection connection, final MappedStatement mappedStatement, final Object parameterObject, final BoundSql boundSql, Log log) throws SQLException { String dbName = Global.getConfig("jdbc.type"); final String countSql; if ("oracle".equals(dbName)) { countSql = "select count(1) from (" + sql + ") tmp_count"; } else { countSql = "select count(1) from (" + removeOrders(sql) + ") tmp_count"; // countSql = "select count(1) " + removeSelect(removeOrders(sql)); } Connection conn = connection; PreparedStatement ps = null; ResultSet rs = null; try { if (log.isDebugEnabled()) { log.debug("COUNT SQL: " + StringUtils.replaceEach(countSql, new String[] { "\n", "\t" }, new String[] { " ", " " })); } if (conn == null) { conn = mappedStatement.getConfiguration().getEnvironment().getDataSource().getConnection(); } ps = conn.prepareStatement(countSql); BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(), countSql, boundSql.getParameterMappings(), parameterObject); //MyBatis foreach ? start if (Reflections.getFieldValue(boundSql, "metaParameters") != null) { MetaObject mo = (MetaObject) Reflections.getFieldValue(boundSql, "metaParameters"); Reflections.setFieldValue(countBS, "metaParameters", mo); } //MyBatis foreach ? end SQLHelper.setParameters(ps, mappedStatement, countBS, parameterObject); rs = ps.executeQuery(); int count = 0; if (rs.next()) { count = rs.getInt(1); } return count; } finally { if (rs != null) { rs.close(); } if (ps != null) { ps.close(); } if (conn != null) { conn.close(); } } }
From source file:com.github.ibole.infrastructure.persistence.db.mybatis.pagination.PaginationInterceptor.java
License:Apache License
private BoundSql copyFromBoundSql(MappedStatement ms, BoundSql boundSql, String sql) { BoundSql newBoundSql = new BoundSql(ms.getConfiguration(), sql, boundSql.getParameterMappings(), boundSql.getParameterObject()); for (ParameterMapping mapping : boundSql.getParameterMappings()) { String prop = mapping.getProperty(); if (boundSql.hasAdditionalParameter(prop)) { newBoundSql.setAdditionalParameter(prop, boundSql.getAdditionalParameter(prop)); }//from w ww . j av a 2s .co m } return newBoundSql; }