一.配置
第一种
/**
* 数据库配置
*
* @return 配置
*/
@Bean
public DatabaseIdProvider getDatabaseIdProvider() {
DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
Properties properties = new Properties();
properties.setProperty("Oracle", "oracle");
properties.setProperty("MySQL", "mysql");
databaseIdProvider.setProperties(properties);
return databaseIdProvider;
}
第二种
写一个实现类 实现DatabaseIdProvider类,实现它的两个方法,返回数据库类型
import org.apache.ibatis.mapping.DatabaseIdProvider;
import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;
/**
* 自定义一个数据库标示提供类,实现DatabaseIdProvider接口
*
*/
@Component
public class MyDatabaseIdProvider implements DatabaseIdProvider {
@Override
public void setProperties(Properties p) {
System.out.println(p.getProperty("Oracle"));
}
@Override
public String getDatabaseId(DataSource dataSource) throws SQLException {
Connection conn = dataSource.getConnection();
String dbName = conn.getMetaData().getDatabaseProductName();
String dbAlias = "";
switch (dbName) {
case "MySQL":
dbAlias = "mysql";
break;
case "Oracle":
dbAlias = "oracle";
break;
default:
break;
}
return dbAlias;
}
}
二.使用
1.在if中通过——databaseId来进行判断
2. 在 标签上的databaseId属性设置数据库类型,就可以根据数据库类型选择执行不同的SQL语句
三.原理
mybatis是根据数据源连接信息的metadata.getDatabaseProductName()来确定数据库类型,并加入环境变量中
版权声明:本文为qq_32448349原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。