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

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

Introduction

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

Prototype

public List<ParameterMapping> getParameterMappings() 

Source Link

Usage

From source file:com.icfcc.db.pagehelper.sqlsource.PageProviderSqlSource.java

License:Open Source License

@Override
protected BoundSql getCountBoundSql(Object parameterObject) {
    BoundSql boundSql;
    SqlSource sqlSource = createSqlSource(parameterObject);
    boundSql = sqlSource.getBoundSql(parameterObject);
    return new BoundSql(configuration, parser.getCountSql(boundSql.getSql()), boundSql.getParameterMappings(),
            parameterObject);//from ww  w .  j a  v  a 2  s .  c o m
}

From source file:com.itfsw.mybatis.generator.plugins.tools.SqlHelper.java

License:Apache License

/**
 * ????sql//  w w w  .ja  v a2s  . c om
 * @param session
 * @param namespace
 * @param params
 * @return
 */
public static String getNamespaceSql(SqlSession session, String namespace, Object params) {
    Configuration configuration = session.getConfiguration();
    MappedStatement mappedStatement = configuration.getMappedStatement(namespace);
    TypeHandlerRegistry typeHandlerRegistry = mappedStatement.getConfiguration().getTypeHandlerRegistry();
    BoundSql boundSql = mappedStatement.getBoundSql(params);
    List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
    String sql = boundSql.getSql();
    if (parameterMappings != null) {
        for (int i = 0; i < parameterMappings.size(); i++) {
            ParameterMapping parameterMapping = parameterMappings.get(i);
            if (parameterMapping.getMode() != ParameterMode.OUT) {
                Object value;
                String propertyName = parameterMapping.getProperty();
                if (boundSql.hasAdditionalParameter(propertyName)) {
                    value = boundSql.getAdditionalParameter(propertyName);
                } else if (params == null) {
                    value = null;
                } else if (typeHandlerRegistry.hasTypeHandler(params.getClass())) {
                    value = params;
                } else {
                    MetaObject metaObject = configuration.newMetaObject(params);
                    value = metaObject.getValue(propertyName);
                }
                JdbcType jdbcType = parameterMapping.getJdbcType();
                if (value == null && jdbcType == null)
                    jdbcType = configuration.getJdbcTypeForNull();
                sql = replaceParameter(sql, value, jdbcType, parameterMapping.getJavaType());
            }
        }
    }
    return sql;
}

From source file:com.jeebase.common.base.component.DataPermissionPaginationInterceptor.java

License:Apache License

/**
 * Physical Page Interceptor for all the queries with parameter {@link RowBounds}
 *///from  w w  w.ja v  a 2 s.  c  o m
@SuppressWarnings("unchecked")
@Override
public Object intercept(Invocation invocation) throws Throwable {
    StatementHandler statementHandler = PluginUtils.realTarget(invocation.getTarget());
    MetaObject metaObject = SystemMetaObject.forObject(statementHandler);

    // SQL ?
    this.sqlParser(metaObject);

    // ?SELECT?
    MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement");
    if (!SqlCommandType.SELECT.equals(mappedStatement.getSqlCommandType())) {
        return invocation.proceed();
    }

    // rowBounds?mapper??
    BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql");
    Object paramObj = boundSql.getParameterObject();
    String originalSql = boundSql.getSql();

    // ???
    // ??DataPermission
    DataPermissionPage dataPermissionPage = null;
    if (paramObj instanceof DataPermissionPage) {
        dataPermissionPage = (DataPermissionPage) paramObj;
    } else if (paramObj instanceof Map) {
        for (Object arg : ((Map) paramObj).values()) {
            if (arg instanceof DataPermissionPage) {
                dataPermissionPage = (DataPermissionPage) arg;
                break;
            }
        }
    }
    if (null != dataPermissionPage) {
        // ?orgId??
        if (StringUtils.isEmpty(dataPermissionPage.getOrgIdAlias())) {
            dataPermissionPage.setOrgIdAlias("organiaztion_id");
        }
        String orgIdAlias = dataPermissionPage.getOrgIdAlias();
        List<String> orgIdList = dataPermissionPage.getOrgIdList();
        String userIdAlias = dataPermissionPage.getUserIdAlias();
        String userId = dataPermissionPage.getUserId();
        boolean ownQuery = dataPermissionPage.isOwnQuery();
        // ?userId??
        if (ownQuery && StringUtils.isEmpty(dataPermissionPage.getUserIdAlias())) {
            dataPermissionPage.setUserIdAlias("user_id");
        }
        // ???SELECTDELETEUPDATE
        SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType();
        if (SqlCommandType.SELECT.equals(sqlCommandType)) {
            originalSql = DataPermissionUtil.convertDataPermission(originalSql, orgIdAlias, orgIdList, ownQuery,
                    userIdAlias, userId);
        }
    }
    // ????

    // ??page
    IPage page = null;
    if (paramObj instanceof IPage) {
        page = (IPage) paramObj;
    } else if (paramObj instanceof Map) {
        for (Object arg : ((Map) paramObj).values()) {
            if (arg instanceof IPage) {
                page = (IPage) arg;
                break;
            }
        }
    }

    /*
     * ??? size ? 0 
     */
    if (null == page || page.getSize() < 0) {
        return invocation.proceed();
    }

    Connection connection = (Connection) invocation.getArgs()[0];
    DbType dbType = StringUtils.isNotEmpty(dialectType) ? DbType.getDbType(dialectType)
            : JdbcUtils.getDbType(connection.getMetaData().getURL());

    boolean orderBy = true;
    if (page.isSearchCount()) {
        SqlInfo sqlInfo = SqlParserUtils.getOptimizeCountSql(page.optimizeCountSql(), sqlParser, originalSql);
        orderBy = sqlInfo.isOrderBy();
        this.queryTotal(overflow, sqlInfo.getSql(), mappedStatement, boundSql, page, connection);
        //            if (page.getTotal() <= 0) {
        //                return invocation.proceed();
        //            }
    }

    String buildSql = concatOrderBy(originalSql, page, orderBy);
    DialectModel model = DialectFactory.buildPaginationSql(page, buildSql, dbType, dialectClazz);
    Configuration configuration = mappedStatement.getConfiguration();
    List<ParameterMapping> mappings = new ArrayList<>(boundSql.getParameterMappings());
    Map<String, Object> additionalParameters = (Map<String, Object>) metaObject
            .getValue("delegate.boundSql.additionalParameters");
    model.consumers(mappings, configuration, additionalParameters);
    metaObject.setValue("delegate.boundSql.sql", model.getDialectSql());
    metaObject.setValue("delegate.boundSql.parameterMappings", mappings);
    return invocation.proceed();
}

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

License:Open Source 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 ww  .ja va 2  s.  co  m
    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());
        MappedStatement newMs = copyFromMappedStatement(mappedStatement, new BoundSqlSqlSource(newBoundSql));

        invocation.getArgs()[0] = newMs;
    }
    //        }
    return invocation.proceed();
}

From source file:com.jwmoon.framework.sql.MyBatisQueryResolver.java

License:Open Source License

private String resolveQuery(SqlSession sqlSession, String queryId, Object sqlParam) {

    BoundSql boundSql = sqlSession.getConfiguration().getMappedStatement(queryId).getSqlSource()
            .getBoundSql(sqlParam);/*w w  w  .  j  a va  2 s  .  c om*/

    String sql = boundSql.getSql();
    //System.out.println(" ? SQL : " + sql);

    Object paramObj = boundSql.getParameterObject();

    if (paramObj != null) {
        List<ParameterMapping> paramMapping = boundSql.getParameterMappings();

        Class<? extends Object> paramClass = paramObj.getClass();

        for (ParameterMapping mapping : paramMapping) {
            String propValue = mapping.getProperty();
            try {
                Field field = paramClass.getDeclaredField(propValue);
                field.setAccessible(true); //  private?   

                Class<?> javaType = mapping.getJavaType();

                if (String.class == javaType) {
                    sql = sql.replaceFirst("\\?", "'" + field.get(paramObj) + "'");
                } else {
                    sql = sql.replaceFirst("\\?", "'" + field.get(paramObj).toString() + "'");
                }

            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            } catch (IllegalArgumentException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            }
        }
    }
    return sql;
}

From source file:com.linju.framework.pager.MSUtils.java

License:Open Source License

/**
 * ???countSqlSource//from  w w  w . j  av  a2  s . c o  m
 *
 * @param configuration
 * @param sqlSource
 * @param parameterObject
 * @return
 */
public SqlSource getStaticCountSqlSource(Configuration configuration, SqlSource sqlSource,
        Object parameterObject) {
    BoundSql boundSql = sqlSource.getBoundSql(parameterObject);
    return new StaticSqlSource(configuration, parser.getCountSql(boundSql.getSql()),
            boundSql.getParameterMappings());
}

From source file:com.linju.framework.pager.parser.impl.AbstractParser.java

License:Open Source License

public List<ParameterMapping> getPageParameterMapping(Configuration configuration, BoundSql boundSql) {
    List<ParameterMapping> newParameterMappings = new ArrayList<ParameterMapping>();
    if (boundSql.getParameterMappings() != null) {
        newParameterMappings.addAll(boundSql.getParameterMappings());
    }/* ww  w.ja v a  2s. c o  m*/
    newParameterMappings
            .add(new ParameterMapping.Builder(configuration, PAGEPARAMETER_FIRST, Integer.class).build());
    newParameterMappings
            .add(new ParameterMapping.Builder(configuration, PAGEPARAMETER_SECOND, Integer.class).build());
    return newParameterMappings;
}

From source file:com.linju.framework.pager.parser.impl.AbstractParser.java

License:Open Source License

public Map setPageParameter(MappedStatement ms, Object parameterObject, BoundSql boundSql, Page page) {
    Map paramMap = null;/*from  ww w.  j  a v  a  2  s  .com*/
    if (parameterObject == null) {
        paramMap = new HashMap();
    } else if (parameterObject instanceof Map) {
        paramMap = (Map) parameterObject;
    } else {
        paramMap = new HashMap();
        //?sql??ParameterMapping?getter
        //TypeHandlerRegistry???
        boolean hasTypeHandler = ms.getConfiguration().getTypeHandlerRegistry()
                .hasTypeHandler(parameterObject.getClass());
        MetaObject metaObject = SystemMetaObject.forObject(parameterObject);
        //??MyProviderSqlSource?
        if (ms.getSqlSource() instanceof PageProviderSqlSource) {
            paramMap.put(PROVIDER_OBJECT, parameterObject);
        }
        if (!hasTypeHandler) {
            for (String name : metaObject.getGetterNames()) {
                paramMap.put(name, metaObject.getValue(name));
            }
        }
        //????
        if (boundSql.getParameterMappings() != null && boundSql.getParameterMappings().size() > 0) {
            for (ParameterMapping parameterMapping : boundSql.getParameterMappings()) {
                String name = parameterMapping.getProperty();
                if (!name.equals(PAGEPARAMETER_FIRST) && !name.equals(PAGEPARAMETER_SECOND)
                        && paramMap.get(name) == null) {
                    if (hasTypeHandler || parameterMapping.getJavaType().equals(parameterObject.getClass())) {
                        paramMap.put(name, parameterObject);
                        break;
                    }
                }
            }
        }
    }
    //?
    paramMap.put(ORIGINAL_PARAMETER_OBJECT, parameterObject);
    return paramMap;
}

From source file:com.linju.framework.pager.sqlsource.PageProviderSqlSource.java

License:Open Source License

@Override
public BoundSql getBoundSql(Object parameterObject) {
    BoundSql boundSql = null;
    if (parameterObject instanceof Map && ((Map) parameterObject).containsKey(PROVIDER_OBJECT)) {
        boundSql = providerSqlSource.getBoundSql(((Map) parameterObject).get(PROVIDER_OBJECT));
    } else {//w ww.ja va 2  s  .  c  om
        boundSql = providerSqlSource.getBoundSql(parameterObject);
    }
    if (count) {
        return new BoundSql(configuration, parser.getCountSql(boundSql.getSql()),
                boundSql.getParameterMappings(), parameterObject);
    } else {
        return new BoundSql(configuration, parser.getPageSql(boundSql.getSql()),
                parser.getPageParameterMapping(configuration, boundSql), parameterObject);
    }
}

From source file:com.lushapp.common.orm.mybatis.interceptor.PaginationInterceptor.java

License:Open Source License

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  ww . j  ava2s .c o m*/
    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.setTotalCount(
                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());
        MappedStatement newMs = copyFromMappedStatement(mappedStatement, new BoundSqlSqlSource(newBoundSql));

        invocation.getArgs()[0] = newMs;
    }
    //        }
    return invocation.proceed();
}