Example usage for org.apache.ibatis.mapping BoundSql BoundSql

List of usage examples for org.apache.ibatis.mapping BoundSql BoundSql

Introduction

In this page you can find the example usage for org.apache.ibatis.mapping BoundSql BoundSql.

Prototype

public BoundSql(Configuration configuration, String sql, List<ParameterMapping> parameterMappings,
            Object parameterObject) 

Source Link

Usage

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;
}