JPA 获取数据库中所有表名、判断数据库中某个表是否存在、返回数据库中存在的表名

 1 获取数据库中所有表名

     /**
     * 获取所有表格
     *
     * @return
     * @throws SQLException
     */
    public List<String> getAllTableNames() {
        List<String> list = new ArrayList<String>();
        SessionFactory sessionFactory = entityManagerFactory.unwrap(SessionFactory.class);
        Session session = sessionFactory.openSession();
        if (session != null) {
            list = session.doReturningWork(
                    connection -> {
                        List<String> resultList = new ArrayList<>();
                        ResultSet rs;
                        String username=connection.getMetaData().getUserName();
                        try {
                            rs = connection.getMetaData().getTables(connection.getCatalog(),username, null, null);
                            while (rs.next()) {
                                String table = rs.getObject(3).toString();
                                resultList.add(table);
                            }
                        } catch (SQLException e) {
                            //不存在
                            return resultList;
                        }
                        rs.close();
                        return resultList;
                    }
            );
            session.close();
        }
        return list;
    }

2 判断数据库中某个表是否存在 

    /**
     * 验证表是否存在
     * @param tableName 表名
     * @return (false:不存在,true:存在)
     */
    public boolean checkTableNameExist(String tableName) {
        List<String> tableNameList=getAllTableNames();
        if(tableNameList==null||tableNameList.size()<=0){
            return false;
        }
        return tableNameList.contains(tableName)?true:false;
    }

3 返回数据库中存在的表名

    /**
     * 验证表是否存在
     * @param tableNameList 需要判断的表名列表
     * @return 
     */
    public List<String> getExistTableNameList(List<String> tableNameList) {
        List<String> exsitableNameList=getAllTableNames();
        if(exsitableNameList==null||exsitableNameList.size()<=0){
            return new ArrayList<>();
        }
        return exsitableNameList.stream().filter(x->tableNameList.contains(x)).collect(Collectors.toList());
    }
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值