类org.springframework.boot.jdbc.DatabaseDriver源码实例Demo

下面列出了怎么用org.springframework.boot.jdbc.DatabaseDriver的API类实例代码及写法,或者点击链接到github查看源代码。

/**
 * 获取当前使用数据库类型
 */
private static String getDatabaseName(DataSource dataSource) {
    try {
        String productName = JdbcUtils.
                commonDatabaseName(JdbcUtils.extractDatabaseMetaData(
                        dataSource, "getDatabaseProductName"
                ).toString());
        DatabaseDriver databaseDriver = DatabaseDriver.fromProductName(productName);
        if (databaseDriver == DatabaseDriver.UNKNOWN) {
            throw new IllegalStateException("Unable to detect database type");
        }
        return databaseDriver.getId();
    } catch (MetaDataAccessException ex) {
        throw new IllegalStateException("Unable to detect database type", ex);
    }
}
 
@Override
public void customize(FluentConfiguration configuration) {
	// boot's flyway auto-config doesn't allow to define callbacks per
	// vendor id, so essentially customizing those here.
	DataSource dataSource = configuration.getDataSource();
	DatabaseDriver databaseDriver = getDatabaseDriver(dataSource);
	logger.info("Customizing flyway config, detected DatabaseDriver as {}.", databaseDriver);
	if (databaseDriver == DatabaseDriver.POSTGRESQL) {
		configuration.callbacks(new PostgresBeforeBaseline());
	}
	else if (databaseDriver == DatabaseDriver.MYSQL || databaseDriver == DatabaseDriver.MARIADB) {
		configuration.callbacks(new MysqlBeforeBaseline());
	}
	else if (databaseDriver == DatabaseDriver.SQLSERVER) {
		configuration.callbacks(new MsSqlBeforeBaseline());
	}
	else if (databaseDriver == DatabaseDriver.ORACLE) {
		configuration.callbacks(new OracleBeforeBaseline());
	}
	else if (databaseDriver == DatabaseDriver.DB2) {
		configuration.callbacks(new Db2BeforeBaseline());
	}
}
 
@Override
public void customize(FluentConfiguration configuration) {
	// boot's flyway auto-config doesn't allow to define callbacks per
	// vendor id, so essentially customizing those here.
	DataSource dataSource = configuration.getDataSource();
	DatabaseDriver databaseDriver = getDatabaseDriver(dataSource);
	if (databaseDriver == DatabaseDriver.POSTGRESQL) {
		configuration.callbacks(new PostgresBeforeBaseline());
	}
	else if (databaseDriver == DatabaseDriver.MYSQL || databaseDriver == DatabaseDriver.MARIADB) {
		configuration.callbacks(new MysqlBeforeBaseline());
	}
	else if (databaseDriver == DatabaseDriver.SQLSERVER) {
		configuration.callbacks(new MsSqlBeforeBaseline());
	}
	else if (databaseDriver == DatabaseDriver.ORACLE) {
		configuration.callbacks(new OracleBeforeBaseline());
	}
	else if (databaseDriver == DatabaseDriver.DB2) {
		configuration.callbacks(new Db2BeforeBaseline());
	}
}
 
private DatabaseDriver getDatabaseDriver(DataSource dataSource) {
	// copied from boot's flyway auto-config to get matching db vendor id
	try {
		String url = JdbcUtils.extractDatabaseMetaData(dataSource, "getURL");
		return DatabaseDriver.fromJdbcUrl(url);
	}
	catch (MetaDataAccessException ex) {
		throw new IllegalStateException(ex);
	}
}
 
源代码5 项目: teiid-spring-boot   文件: XADataSourceBuilder.java
public String dataSourceClassName() {
    String className = this.properties.get("dataSourceClassName");
    if (!StringUtils.hasLength(className)) {
        String url = this.properties.get("url");
        className = DatabaseDriver.fromJdbcUrl(url).getXaDataSourceClassName();
    }
    return className;
}
 
private DatabaseDriver getDatabaseDriver(DataSource dataSource) {
	// copied from boot's flyway auto-config to get matching db vendor id
	try {
		String url = JdbcUtils.extractDatabaseMetaData(dataSource, "getURL");
		return DatabaseDriver.fromJdbcUrl(url);
	}
	catch (MetaDataAccessException ex) {
		throw new IllegalStateException(ex);
	}
}
 
private String driverClassName() {
    if (StringUtils.hasText(driverClassName)) {
        return driverClassName;
    }
    return DatabaseDriver.fromJdbcUrl(url).getDriverClassName();
}
 
private String validationQuery() {
    if (StringUtils.hasText(validationQuery)) {
        return validationQuery;
    }
    return DatabaseDriver.fromJdbcUrl(url).getValidationQuery();
}
 
 类所在包
 类方法
 同包方法