1 SELECT 1sql
mysql执行SELECT 1 sql可以成功,oracle会失败。
@PersistenceContext
private EntityManager entityManager;
/**
* 是否为Oracle数据库
* @return true:oracle,false:mysql或sql server
*/
public boolean isOracleDataBase(){
try {
Query query = this.entityManager.createNativeQuery(" SELECT 1 ");
query.getResultList();
return false;
}catch (Exception e){
return true;
}
}
2 getDatabaseProductName()
getDatabaseProductName()会返回数据库类型名。
@PersistenceContext
private EntityManager entityManager;
/**
* 是否为Oracle数据库
* @return true:oracle,false:mysql或sql server
*/
public boolean isOracleDataBase(){
boolean res = false;
SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
Session session = sessionFactory.openSession();
if (session != null) {
res = session.doReturningWork(
connection -> {
String dbName = connection.getMetaData().getDatabaseProductName();
if(StrUtil.equals("Oracle",dbName)){
return true;
}else{
return false;
}
}
);
session.close();
}
return res;
}