使用原生JDBC動態(tài)解析并獲取表格列名和數(shù)據(jù)的方法
應(yīng)用場景
查詢某張表,對于返回的執(zhí)行結(jié)果,咱們并不需要知道他有哪些字段,字段名叫啥,直接通過原生JDBC動態(tài)的獲取列名以及對應(yīng)的數(shù)據(jù)。
其實就有點像遍歷map集合,并不需要知道key叫啥,一樣可以遍歷出來:
Map<String,Object> map = Maps.newHashMap(); for (Map.Entry<String, Object> entry : map.entrySet()) { System.out.println(entry.getKey() + " : " + entry.getValue()); }
目標
將數(shù)據(jù)庫查詢出來的結(jié)果,存放到一個List<Map<String, Object>>集合中,方便后續(xù)批量將該集合的數(shù)據(jù)插入到其他地方
整干貨
private List<Map<String, Object>> executeQuery(String sqlStr,String url,String username,String password) { Connection connection = DriverManager.getConnection(url, username, password); Statement statement = null; ResultSet resultSet = null; List<Map<String, Object>> resultList = new ArrayList<Map<String, Object>>(); try { statement = connection.createStatement(); resultSet = statement.executeQuery(sqlStr); final ResultSetMetaData rsmd = resultSet.getMetaData(); final String[] columnName = new String[rsmd.getColumnCount()]; for (int i = 1; i <= rsmd.getColumnCount(); ++i) { columnName[i - 1] = rsmd.getColumnLabel(i); } while (resultSet.next()) { LinkedHashMap<String, Object> map = new LinkedHashMap<String, Object>(); for (int j = 1; j <= rsmd.getColumnCount(); ++j) { if (resultSet.getObject(j) != null && !resultSet.getObject(j).equals("")) { String columnData = resultSet.getObject(j).toString().trim(); map.put(columnName[j - 1], columnData); } else { map.put(columnName[j - 1], ""); } } resultList.add(map); } } catch (SQLException e) { logger.error("SQL語句執(zhí)行失敗",e); }finally { if( null != resultSet ) { resultSet.close(); } if( null != statement ) { statement.close(); } if( null != connection ) { connection .close(); } } return resultList; }
到此這篇關(guān)于使用原生JDBC動態(tài)解析并獲取表格列名和數(shù)據(jù)的文章就介紹到這了,更多相關(guān)JDBC獲取表格列名和數(shù)據(jù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringBoot+Vue靜態(tài)資源刷新后無法訪問的問題解決方案
這篇文章主要介紹了SpringBoot+Vue靜態(tài)資源刷新后無法訪問的問題解決方案,文中通過代碼示例和圖文講解的非常詳細,對大家解決問題有一定的幫助,需要的朋友可以參考下2024-05-05k8s部署springboot實現(xiàn)前后端分離項目
本文主要介紹了k8s部署springboot實現(xiàn)前后端分離項目,主要包括配置文件、鏡像構(gòu)建和容器編排等方面,具有一定的參考價值,感興趣的可以了解一下2024-01-01如何利用postman完成JSON串的發(fā)送功能(springboot)
這篇文章主要介紹了如何利用postman完成JSON串的發(fā)送功能(springboot),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-07-07IntelliJ IDEA 2020 安裝和常用配置(推薦)
這篇文章主要介紹了IntelliJ IDEA 2020 安裝和常用配置(推薦),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-08-08