根据数据库表名动态查询表字段

目的

        通过数据库的表名,获取到此表的所有表字段,以用作统一的批量新增。

代码

        

package org.springblade.test;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class QueryColumnsByTableName {

    /**
     * 获取数据库连接
     *
     * @return 返回数据库连接对象
     * @throws SQLException 如果连接失败或无法建立连接时抛出异常
     */
    public static Connection getConnection() throws SQLException {
        // 加载并注册JDBC驱动
        // Class.forName("com.mysql.jdbc.Driver");
        String JDBC_URL = "your_jdbc_url";
        String USER = "your_username";
        String PASSWORD = "your_password";
        // 使用DriverManager获取数据库连接
        return DriverManager.getConnection(JDBC_URL, USER, PASSWORD);
    }

    /**
     * 根据表名查询字段列表
     *
     * @param tableName 表名
     * @return 包含表名和字段列表的映射关系
     */
    public Map> queryColumnsByTableName(String tableName) {
        Map> tableFieldMap = new HashMap<>();
        try (Connection connection = getConnection()) {
            DatabaseMetaData metaData = connection.getMetaData();
            ResultSet columnsRs = metaData.getColumns(null, null, tableName, "%");
            while (columnsRs.next()) {
                String columnName = columnsRs.getString("COLUMN_NAME");
                // 使用表名作为键存储字段列表
                if (!tableFieldMap.containsKey(tableName)) {
                    tableFieldMap.put(tableName, new ArrayList<>());
                }
                tableFieldMap.get(tableName).add(columnName);
            }
            columnsRs.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return tableFieldMap;
    }

    @org.junit.jupiter.api.Test
    public void queryColumnsByTableNameTest() {
        String tableName = "your_table_name";
        Map> dqGzfwYqjd = queryColumnsByTableName(tableName);
        System.out.println("Table '" + tableName + "' fields:");
        for (String field : dqGzfwYqjd.get(tableName)) {
            System.out.println(field);
        }
    }
}

        

你可能感兴趣的:(Java,数据库,java)