JPA para determinar el tipo de base de datos (Orale, MySQL)

1 SELECCIONAR 1sql

mysql ejecuta SELECT 1 sql puede tener éxito, Oracle fallará.

    @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 () devolverá el nombre del tipo de base de datos.

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

Supongo que te gusta

Origin blog.csdn.net/qq_38974638/article/details/115162370
Recomendado
Clasificación