Example usage for org.apache.ibatis.executor.statement BaseStatementHandler getBoundSql

List of usage examples for org.apache.ibatis.executor.statement BaseStatementHandler getBoundSql

Introduction

In this page you can find the example usage for org.apache.ibatis.executor.statement BaseStatementHandler getBoundSql.

Prototype

@Override
    public BoundSql getBoundSql() 

Source Link

Usage

From source file:com.beginner.core.page.PagePlugin.java

License:Apache License

/**
 * ?/*from   w ww  .  jav  a 2s . c om*/
 */
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.eryansky.common.orm.mybatis.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 = ReflectionUtils.getFieldValue(statementHandler, DELEGATE);
        final MappedStatement mappedStatement = ReflectionUtils.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 {//w  ww  .  j a va 2s. c  om
            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.setTotalCount(count);
            String pagingSql = SQLHelper.generatePageSql(sql, page, DIALECT);
            if (log.isDebugEnabled()) {
                log.debug("PAGE SQL:" + pagingSql);
            }
            //sql???BoundSql.
            ReflectionUtils.setFieldValue(boundSql, "sql", pagingSql);
        }

        if (boundSql.getSql() == null || "".equals(boundSql.getSql())) {
            return null;
        }

    }
    //        }
    return ivk.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);//  w w w  . j av a 2s .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.jhcz.trade.framework.plugin.mybatis.PagePlugin.java

License:Open Source License

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");

        // 1???.*query.* 2??page?

        // if (mappedStatement.getId().matches(pageSqlId)) { // ?SQL
        BoundSql boundSql = delegate.getBoundSql();

        // SQL<select>parameterType??Mapper??,??
        Object parameterObject = boundSql.getParameterObject();

        if (parameterObject == null) {
            // throw new
            // NullPointerException("boundSql.getParameterObject() is null!");
            return ivk.proceed();
        } else {//from  www  . j av  a  2 s  . com

            PageView pageView = null;

            if (parameterObject instanceof PageView) {
                // ?Pages
                pageView = (PageView) parameterObject;
            } else if (parameterObject instanceof Map) {
                for (Entry entry : (Set<Entry>) ((Map) parameterObject).entrySet()) {
                    if (entry.getValue() instanceof PageView) {
                        pageView = (PageView) entry.getValue();
                        break;
                    }
                }
                if (pageView == null) {
                    return ivk.proceed();
                }
            } else {
                // ??Pages
                pageView = ReflectHelper.getValueByFieldType(parameterObject, PageView.class);
                if (pageView == null) {
                    return ivk.proceed();
                }
            }

            String sql = boundSql.getSql();
            PreparedStatement countStmt = null;
            ResultSet rs = null;
            try {

                // 
                Connection connection = (Connection) ivk.getArgs()[0];

                String countSql = "select count(1) from (" + sql + ") tmp_count";
                countStmt = connection.prepareStatement(countSql);

                ReflectHelper.setValueByFieldName(boundSql, "sql", countSql);

                DefaultParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement,
                        parameterObject, boundSql);

                parameterHandler.setParameters(countStmt);
                rs = countStmt.executeQuery();

                int count = 0;

                if (rs.next()) {
                    count = ((Number) rs.getObject(1)).intValue();
                }

                pageView.setRowCount(count);
            } finally {
                try {
                    rs.close();
                } catch (Exception e) {
                }
                try {
                    countStmt.close();
                } catch (Exception e) {
                }
            }

            String pageSql = generatePagesSql(sql, pageView);
            ReflectHelper.setValueByFieldName(boundSql, "sql", pageSql); // sql???BoundSql.
        }
        // }
    }
    return ivk.proceed();
}

From source file:com.joey.Fujikom.common.persistence.interceptor.PreparePaginationInterceptor.java

License:Open Source 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  ww  .  j  a  v  a2  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.lushapp.common.orm.mybatis.interceptor.PreparePaginationInterceptor.java

License:Open Source License

public Object intercept(Invocation ivk) throws Throwable {
    if (ivk.getTarget().getClass().isAssignableFrom(RoutingStatementHandler.class)) {
        final RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget();
        final BaseStatementHandler delegate = ReflectionUtils.getFieldValue(statementHandler, DELEGATE);
        final MappedStatement mappedStatement = ReflectionUtils.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 {//www . j  ava2s . c  o  m
            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.setTotalCount(count);
            String pagingSql = SQLHelper.generatePageSql(sql, page, DIALECT);
            if (log.isDebugEnabled()) {
                log.debug("PAGE SQL:" + pagingSql);
            }
            //sql???BoundSql.
            ReflectionUtils.setFieldValue(boundSql, "sql", pagingSql);
        }

        if (boundSql.getSql() == null || "".equals(boundSql.getSql())) {
            return null;
        }

    }
    //        }
    return ivk.proceed();
}

From source file:com.wsun.seap.dao.persistence.interceptor.PreparePaginationInterceptor.java

License:Open Source 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) ReflectionsUtil
                .getFieldValue(statementHandler, DELEGATE);
        final MappedStatement mappedStatement = (MappedStatement) ReflectionsUtil.getFieldValue(delegate,
                MAPPED_STATEMENT);/*from   ww  w  .j a v a  2s . c o m*/

        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()[MAPPED_STATEMENT_INDEX];
            final String sql = boundSql.getSql();
            //
        }

        if (boundSql.getSql() == null || "".equals(boundSql.getSql())) {
            return null;
        }
    }
    return ivk.proceed();
}

From source file:com.zrx.authority.dao.plugin.PagePlugin.java

public Object intercept(Invocation ivk) throws Throwable {
    // TODO Auto-generated method stub
    if (ivk.getTarget() instanceof RoutingStatementHandler) {
        RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget();
        BaseStatementHandler delegate = (BaseStatementHandler) ReflectHelper
                .getValueByFieldName(statementHandler, "delegate");
        MappedStatement mappedStatement = (MappedStatement) ReflectHelper.getValueByFieldName(delegate,
                "mappedStatement");

        if (mappedStatement.getId().matches(pageSqlId)) { //?SQL
            BoundSql boundSql = delegate.getBoundSql();
            Object parameterObject = boundSql.getParameterObject();//SQL<select>parameterType??Mapper??,??
            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+ ") as tmp_count"; //
                String countSql = "select count(0) from (" + sql + ")  tmp_count"; // == oracle  as (SQL command not properly ended)
                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);
                }/* www  .j  a  va  2 s.c  om*/
                rs.close();
                countStmt.close();
                //System.out.println(count);
                Page page = null;
                if (parameterObject instanceof Page) { //?Page
                    page = (Page) parameterObject;
                    page.setEntityOrField(true); //?com.jalan.entity.Page.entityOrField 
                    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); //?com.jalan.entity.Page.entityOrField 
                        page.setTotalResult(count);
                        ReflectHelper.setValueByFieldName(parameterObject, "page", page); //??
                    } else {
                        throw new NoSuchFieldException(
                                parameterObject.getClass().getName() + "? page ?");
                    }
                }
                String pageSql = generatePageSql(sql, page);
                ReflectHelper.setValueByFieldName(boundSql, "sql", pageSql); //sql???BoundSql.
            }
        }
    }
    return ivk.proceed();
}