Ejemplo n.º 1
0
  /** {@inheritDoc} */
  public Configuration get() {
    final Configuration configuration = new Configuration(environment);
    configuration.setLazyLoadingEnabled(lazyLoadingEnabled);
    configuration.setAggressiveLazyLoading(aggressiveLazyLoading);
    configuration.setMultipleResultSetsEnabled(multipleResultSetsEnabled);
    configuration.setUseGeneratedKeys(useGeneratedKeys);
    configuration.setUseColumnLabel(useColumnLabel);
    configuration.setCacheEnabled(cacheEnabled);
    configuration.setDefaultExecutorType(defaultExecutorType);
    configuration.setAutoMappingBehavior(autoMappingBehavior);
    configuration.setObjectFactory(objectFactory);
    configuration.setObjectWrapperFactory(objectWrapperFactory);
    configuration.setDefaultScriptingLanguage(defaultScriptingLanguageType);
    configuration.setMapUnderscoreToCamelCase(mapUnderscoreToCamelCase);
    configuration.setCallSettersOnNulls(callSettersOnNulls);
    configuration.setDefaultStatementTimeout(defaultStatementTimeout);

    try {
      if (databaseIdProvider != null) {
        configuration.setDatabaseId(databaseIdProvider.getDatabaseId(dataSource));
      }

      for (Map.Entry<String, Class<?>> alias : typeAliases.entrySet()) {
        configuration.getTypeAliasRegistry().registerAlias(alias.getKey(), alias.getValue());
      }

      for (Map.Entry<Class<?>, TypeHandler<?>> typeHandler : typeHandlers.entrySet()) {
        registerTypeHandler(configuration, typeHandler.getKey(), typeHandler.getValue());
      }

      for (TypeHandler<?> typeHandler : mappingTypeHandlers) {
        configuration.getTypeHandlerRegistry().register(typeHandler);
      }

      for (Class<?> mapperClass : mapperClasses) {
        if (!configuration.hasMapper(mapperClass)) {
          configuration.addMapper(mapperClass);
        }
      }

      for (Interceptor interceptor : plugins) {
        configuration.addInterceptor(interceptor);
      }

      if (failFast) {
        configuration.getMappedStatementNames();
      }
    } catch (Throwable cause) {
      throw new ProvisionException(
          "An error occurred while building the org.apache.ibatis.session.Configuration", cause);
    } finally {
      ErrorContext.instance().reset();
    }

    return configuration;
  }