JPA 判断数据库类型(Orale、MySQL)

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;
    }

猜你喜欢

转载自blog.csdn.net/qq_38974638/article/details/115162370
JPA