Example usage for org.apache.ibatis.mapping MappedStatement getConfiguration

List of usage examples for org.apache.ibatis.mapping MappedStatement getConfiguration

Introduction

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

Prototype

public Configuration getConfiguration() 

Source Link

Usage

From source file:SqlUtil.java

License:Open Source License

/**
 * ?ms - ms???/*  ww  w. j  av  a  2 s  .co m*/
 *
 * @param ms
 * @param boundSql
 * @param suffix
 * @return
 */
private MappedStatement getMappedStatement(MappedStatement ms, BoundSql boundSql, String suffix) {
    MappedStatement qs = null;
    try {
        qs = ms.getConfiguration().getMappedStatement(ms.getId() + suffix);
    } catch (Exception e) {
        //ignore
    }
    if (qs == null) {
        //MappedStatement
        qs = newMappedStatement(ms, getNewSqlSource(ms, new BoundSqlSqlSource(boundSql), suffix), suffix);
        try {
            ms.getConfiguration().addMappedStatement(qs);
        } catch (Exception e) {
            //ignore
        }
    }
    return qs;
}

From source file:SqlUtil.java

License:Open Source License

/**
 * countMappedStatement//from   ww  w  .j  a va  2 s .c om
 *
 * @param ms
 * @param newSqlSource
 * @param suffix
 * @return
 */
private MappedStatement newMappedStatement(MappedStatement ms, SqlSource newSqlSource, String suffix) {
    String id = ms.getId() + suffix;
    MappedStatement.Builder builder = new MappedStatement.Builder(ms.getConfiguration(), id, newSqlSource,
            ms.getSqlCommandType());
    builder.resource(ms.getResource());
    builder.fetchSize(ms.getFetchSize());
    builder.statementType(ms.getStatementType());
    builder.keyGenerator(ms.getKeyGenerator());
    if (ms.getKeyProperties() != null && ms.getKeyProperties().length != 0) {
        StringBuilder keyProperties = new StringBuilder();
        for (String keyProperty : ms.getKeyProperties()) {
            keyProperties.append(keyProperty).append(",");
        }
        keyProperties.delete(keyProperties.length() - 1, keyProperties.length());
        builder.keyProperty(keyProperties.toString());
    }
    builder.timeout(ms.getTimeout());
    builder.parameterMap(ms.getParameterMap());
    if (suffix == SUFFIX_PAGE) {
        builder.resultMaps(ms.getResultMaps());
    } else {
        //countint
        List<ResultMap> resultMaps = new ArrayList<ResultMap>();
        ResultMap resultMap = new ResultMap.Builder(ms.getConfiguration(), id, int.class, EMPTY_RESULTMAPPING)
                .build();
        resultMaps.add(resultMap);
        builder.resultMaps(resultMaps);
    }
    builder.resultSetType(ms.getResultSetType());
    builder.cache(ms.getCache());
    builder.flushCacheRequired(ms.isFlushCacheRequired());
    builder.useCache(ms.isUseCache());

    return builder.build();
}

From source file:SqlUtil.java

License:Open Source License

/**
 * ?sqlSource//from ww w .j ava 2  s.com
 *
 * @param ms
 * @param newSqlSource
 * @param suffix
 * @return
 */
private SqlSource getNewSqlSource(MappedStatement ms, BoundSqlSqlSource newSqlSource, String suffix) {
    //XMLLanguageDriver.javaXMLScriptBuilder.java???SqlSource
    //?sql
    if (isDynamic(ms)) {
        MetaObject msObject = forObject(ms);
        SqlNode sqlNode = (SqlNode) msObject.getValue("sqlSource.rootSqlNode");
        MixedSqlNode mixedSqlNode = null;
        if (sqlNode instanceof MixedSqlNode) {
            mixedSqlNode = (MixedSqlNode) sqlNode;
        } else {
            List<SqlNode> contents = new ArrayList<SqlNode>(1);
            contents.add(sqlNode);
            mixedSqlNode = new MixedSqlNode(contents);
        }
        return new MyDynamicSqlSource(ms.getConfiguration(), mixedSqlNode, suffix == SUFFIX_COUNT);
    }
    //??sql
    else if (suffix == SUFFIX_PAGE) {
        //sql
        return getPageSqlSource(ms.getConfiguration(), newSqlSource);
    }
    //??count-sql
    else {
        return getCountSqlSource(newSqlSource);
    }
}

From source file:cn.com.bricks.mybatis.rbac.DynamicRbacInterceptor.java

@Override
public Object intercept(Invocation invocation) throws Throwable {
    StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
    MetaObject metaStatementHandler = MetaObject.forObject(statementHandler, DEFAULT_OBJECT_FACTORY,
            DEFAULT_OBJECT_WRAPPER_FACTORY, DEFAULT_REFLECTOR_FACTORY);
    MappedStatement mappedStatement = (MappedStatement) metaStatementHandler
            .getValue("delegate.mappedStatement");

    // ?sql/*www  .ja v  a 2s .  c  o  m*/
    BoundSql bsql = statementHandler.getBoundSql();
    // ?sql
    TextSqlNode sqlNode = new TextSqlNode(bsql.getSql());
    BoundSql nbsql = getBoundSql(mappedStatement.getConfiguration(), bsql.getParameterObject(), sqlNode);
    // ?sql?
    metaStatementHandler.setValue("delegate.boundSql.sql", nbsql.getSql());
    return invocation.proceed();
}

From source file:cn.myblog.uitl.MybatisPageHelper.PageHelper.java

License:Open Source License

/**
 * MappedStatement?????//from   www  . ja  v a2  s . c o m
 *
 * @param ms
 * @param newSqlSource
 * @return
 */
private MappedStatement newMappedStatement(MappedStatement ms, SqlSource newSqlSource) {
    MappedStatement.Builder builder = new MappedStatement.Builder(ms.getConfiguration(), ms.getId() + "_",
            newSqlSource, ms.getSqlCommandType());
    builder.resource(ms.getResource());
    builder.fetchSize(ms.getFetchSize());
    builder.statementType(ms.getStatementType());
    builder.keyGenerator(ms.getKeyGenerator());
    if (ms.getKeyProperties() != null && ms.getKeyProperties().length != 0) {
        StringBuffer keyProperties = new StringBuffer();
        for (String keyProperty : ms.getKeyProperties()) {
            keyProperties.append(keyProperty).append(",");
        }
        keyProperties.delete(keyProperties.length() - 1, keyProperties.length());
        builder.keyProperty(keyProperties.toString());
    }
    builder.timeout(ms.getTimeout());
    builder.parameterMap(ms.getParameterMap());
    //resultMaps?int??resultMap - ?
    List<ResultMap> resultMaps = new ArrayList<ResultMap>();
    ResultMap resultMap = new ResultMap.Builder(ms.getConfiguration(), ms.getId(), int.class,
            EMPTY_RESULTMAPPING).build();
    resultMaps.add(resultMap);
    builder.resultMaps(resultMaps);
    builder.resultSetType(ms.getResultSetType());
    builder.cache(ms.getCache());
    builder.flushCacheRequired(ms.isFlushCacheRequired());
    builder.useCache(ms.isUseCache());

    return builder.build();
}

From source file:cn.org.awcp.core.mybatis.mapper.MapperTemplate.java

License:Open Source License

/**
 * ?SqlSource/*  w  ww.  ja  v  a  2s.com*/
 * 
 * @param ms
 * @throws java.lang.reflect.InvocationTargetException
 * @throws IllegalAccessException
 */
public void setSqlSource(MappedStatement ms) throws Exception {
    if (this.mapperClass == getMapperClass(ms.getId())) {
        if (mapperHelper.isSpring4()) {
            return;
        } else if (mapperHelper.isSpring()) {
            throw new RuntimeException("Spring4.x.x ??,"
                    + "?Spring" + mapperHelper.getSpringVersion()
                    + ",?,"
                    + "?MapperScannerConfigurer,????Mapper?,"
                    + "??Mybatisxml?<mappers>Mapper?.");
        } else {
            throw new RuntimeException(
                    "??Mybatisxml?<mappers>Mapper?.");
        }
    }
    Method method = methodMap.get(getMethodName(ms));
    try {
        if (method.getReturnType() == Void.TYPE) {
            method.invoke(this, ms);
        } else if (SqlNode.class.isAssignableFrom(method.getReturnType())) {
            SqlNode sqlNode = (SqlNode) method.invoke(this, ms);
            DynamicSqlSource dynamicSqlSource = new DynamicSqlSource(ms.getConfiguration(), sqlNode);
            setSqlSource(ms, dynamicSqlSource);
        } else {
            throw new RuntimeException(
                    "Mapper,?voidSqlNode!");
        }
    } catch (IllegalAccessException e) {
        throw new RuntimeException(e);
    } catch (InvocationTargetException e) {
        throw new RuntimeException(e.getTargetException() != null ? e.getTargetException() : e);
    }
}

From source file:cn.org.awcp.core.mybatis.mapper.MapperTemplate.java

License:Open Source License

/**
 * ??/*w  ww .j a va2 s.c  o m*/
 * 
 * @param ms
 * @return
 */
protected List<ParameterMapping> getPrimaryKeyParameterMappings(MappedStatement ms) {
    Class<?> entityClass = getSelectReturnType(ms);
    List<EntityHelper.EntityColumn> entityColumns = EntityHelper.getPKColumns(entityClass);
    List<ParameterMapping> parameterMappings = new ArrayList<ParameterMapping>();
    for (EntityHelper.EntityColumn column : entityColumns) {
        ParameterMapping.Builder builder = new ParameterMapping.Builder(ms.getConfiguration(),
                column.getProperty(), column.getJavaType());
        builder.mode(ParameterMode.IN);
        parameterMappings.add(builder.build());
    }
    return parameterMappings;
}

From source file:cn.org.awcp.core.mybatis.mapper.MapperTemplate.java

License:Open Source License

/**
 * create criteria from baseExample//w  w w .j  a  v  a 2 s.  c o  m
 * 
 * @param sqlNodes
 * @param baseExample
 */
protected SqlNode createCriteria(MappedStatement ms) {

    List<SqlNode> ifSqlNodes = new ArrayList<SqlNode>();

    SqlNode noValueSqlNode = new TextSqlNode(" ${criterion.condition} ");
    ifSqlNodes.add(new IfSqlNode(noValueSqlNode, "criterion.noValue"));

    SqlNode singleValueSqlNode = new TextSqlNode(" ${criterion.condition} #{criterion.value} ");
    ifSqlNodes.add(new IfSqlNode(singleValueSqlNode, "criterion.singleValue"));

    SqlNode betweenValueSqlNode = new TextSqlNode(
            " ${criterion.condition} #{criterion.value} and #{criterion.secondValue} ");
    ifSqlNodes.add(new IfSqlNode(betweenValueSqlNode, "criterion.betweenValue"));

    List<SqlNode> listSqlNode = new ArrayList<SqlNode>();
    listSqlNode.add(new TextSqlNode(" ${criterion.condition} "));
    SqlNode listItemNode = new TextSqlNode(" #{listItem} ");
    SqlNode foreachSqlNode3 = new ForEachSqlNode(ms.getConfiguration(), listItemNode, "criterion.value", null,
            "listItem", " (", ") ", ",");
    listSqlNode.add(foreachSqlNode3);
    ifSqlNodes.add(new IfSqlNode(new MixedSqlNode(listSqlNode), "criterion.listValue"));

    SqlNode chooseSqlNode = new ChooseSqlNode(ifSqlNodes, null);
    SqlNode foreachSqlNode2 = new ForEachSqlNode(ms.getConfiguration(), chooseSqlNode, "criteria.criteria",
            null, "criterion", null, null, "AND");
    SqlNode trimSqlNode = new TrimSqlNode(ms.getConfiguration(), foreachSqlNode2, " (", "AND", ") ",
            (String) null);
    SqlNode iftestSqlNode = new IfSqlNode(trimSqlNode, "criteria.valid");
    SqlNode foreachSqlNode1 = new ForEachSqlNode(ms.getConfiguration(), iftestSqlNode, "oredCriteria", null,
            "criteria", null, null, "OR");

    return foreachSqlNode1;
}

From source file:cn.org.awcp.core.mybatis.mapper.MapperTemplate.java

License:Open Source License

/**
 * ??//from w w w.j  a va  2s  .c o  m
 * 
 * @param ms
 * @return
 */
protected List<ParameterMapping> getColumnParameterMappings(MappedStatement ms) {
    Class<?> entityClass = getSelectReturnType(ms);
    List<EntityHelper.EntityColumn> entityColumns = EntityHelper.getColumns(entityClass);
    List<ParameterMapping> parameterMappings = new ArrayList<ParameterMapping>();
    for (EntityHelper.EntityColumn column : entityColumns) {
        ParameterMapping.Builder builder = new ParameterMapping.Builder(ms.getConfiguration(),
                column.getProperty(), column.getJavaType());
        builder.mode(ParameterMode.IN);
        parameterMappings.add(builder.build());
    }
    return parameterMappings;
}

From source file:cn.org.awcp.core.mybatis.mapper.MapperTemplate.java

License:Open Source License

/**
 * SelectKey - ?mysqlOracle?//  w  ww .  ja va  2  s . c  o  m
 * 
 * @param ms
 * @param column
 */
protected void newSelectKeyMappedStatement(MappedStatement ms, EntityHelper.EntityColumn column) {
    String keyId = ms.getId() + SelectKeyGenerator.SELECT_KEY_SUFFIX;
    if (ms.getConfiguration().hasKeyGenerator(keyId)) {
        return;
    }
    Class<?> entityClass = getSelectReturnType(ms);
    // defaults
    Configuration configuration = ms.getConfiguration();
    KeyGenerator keyGenerator = null;
    Boolean executeBefore = getBEFORE();
    String IDENTITY = (column.getGenerator() == null || column.getGenerator().equals("")) ? getIDENTITY()
            : column.getGenerator();
    if (IDENTITY.equalsIgnoreCase("JDBC")) {
        keyGenerator = new Jdbc3KeyGenerator();
    } else {
        SqlSource sqlSource = new RawSqlSource(configuration, IDENTITY, entityClass);

        MappedStatement.Builder statementBuilder = new MappedStatement.Builder(configuration, keyId, sqlSource,
                SqlCommandType.SELECT);
        statementBuilder.resource(ms.getResource());
        statementBuilder.fetchSize(null);
        statementBuilder.statementType(StatementType.STATEMENT);
        statementBuilder.keyGenerator(new NoKeyGenerator());
        statementBuilder.keyProperty(column.getProperty());
        statementBuilder.keyColumn(null);
        statementBuilder.databaseId(null);
        statementBuilder.lang(configuration.getDefaultScriptingLanuageInstance());
        statementBuilder.resultOrdered(false);
        statementBuilder.resulSets(null);
        statementBuilder.timeout(configuration.getDefaultStatementTimeout());

        List<ParameterMapping> parameterMappings = new ArrayList<ParameterMapping>();
        ParameterMap.Builder inlineParameterMapBuilder = new ParameterMap.Builder(configuration,
                statementBuilder.id() + "-Inline", entityClass, parameterMappings);
        statementBuilder.parameterMap(inlineParameterMapBuilder.build());

        List<ResultMap> resultMaps = new ArrayList<ResultMap>();
        ResultMap.Builder inlineResultMapBuilder = new ResultMap.Builder(configuration,
                statementBuilder.id() + "-Inline", column.getJavaType(), new ArrayList<ResultMapping>(), null);
        resultMaps.add(inlineResultMapBuilder.build());
        statementBuilder.resultMaps(resultMaps);
        statementBuilder.resultSetType(null);

        statementBuilder.flushCacheRequired(false);
        statementBuilder.useCache(false);
        statementBuilder.cache(null);

        MappedStatement statement = statementBuilder.build();
        configuration.addMappedStatement(statement);

        MappedStatement keyStatement = configuration.getMappedStatement(keyId, false);
        keyGenerator = new SelectKeyGenerator(keyStatement, executeBefore);
        configuration.addKeyGenerator(keyId, keyGenerator);
    }
    // keyGenerator
    try {
        MetaObject msObject = forObject(ms);
        msObject.setValue("keyGenerator", keyGenerator);
        msObject.setValue("keyProperties", new String[] { column.getProperty() });
    } catch (Exception e) {
        // ignore
    }
}