import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import com.hcwy.basic.jdbc.DBConnection; import com.hcwy.basic.page.PageBean; public class ArticlesDAO { private static final Map HashMap = null; private PreparedStatement pstmt; private ResultSet rs; private Connection con; // private DBConnection conn; public Connection conn(){ try { Class.forName("com.mysql.jdbc.Driver"); try { con=DriverManager.getConnection("jdbc:mysql://localhost:3316/hcwy","root","root"); } catch (SQLException e) { e.printStackTrace(); } } catch (ClassNotFoundException e) { e.printStackTrace(); } return con; } //查詢SQL public ArrayList chaSQL(String sql){ ArrayList list=new ArrayList(); try { pstmt=this.conn().prepareStatement(sql); rs=pstmt.executeQuery(); ResultSetMetaData rsmd=rs.getMetaData(); int count=rsmd.getColumnCount(); while(rs.next()){ // System.out.println("名字是-->"+rsmd.getColumnName(i)+"/t 得到的object是-->"+rs.getObject(i)+" "+i); HashMap map=new HashMap(); for(int i=0;i<count;i++){ map.put(rsmd.getColumnName(i+1), rs.getObject(i+1)); } list.add(map); } } catch (SQLException e) { e.printStackTrace(); } return list; } //查詢所總條數 public int count(String name){ String sql="select count(*) as aa from "+name; int i=0; try { pstmt=this.conn().prepareStatement(sql); rs=pstmt.executeQuery(); if(rs.next()){ i=rs.getInt("aa"); } } catch (SQLException e) { e.printStackTrace(); } return i; } //查詢SQL帶分頁 public ArrayList chaSQL(String sql,String name,PageBean page){ ArrayList list=new ArrayList(); if(page!=null){ page.setTotalCount(this.count(name)); sql=sql+" limit "+page.getStart()+","+page.getPageSize(); } System.out.println(sql); try { pstmt=this.conn().prepareStatement(sql); rs=pstmt.executeQuery(); ResultSetMetaData rsmd=rs.getMetaData(); int count=rsmd.getColumnCount();//得到表裏字段的總數 while(rs.next()){ // System.out.println("名字是-->"+rsmd.getColumnName(i)+"/t 得到的object是-->"+rs.getObject(i)+" "+i); HashMap map=new HashMap(); for(int i=0;i<count;i++){ map.put(rsmd.getColumnName(i+1), rs.getObject(i+1));//名字和值 } list.add(map); } } catch (SQLException e) { e.printStackTrace(); } return list; } public static void main(String[] args) { PageBean page=new PageBean(); ArticlesDAO dd=new ArticlesDAO(); ArrayList list=dd.chaSQL("select * from articles","articles",page);//如果這裏不寫page和articles的意思 就是說不要分頁 //任何對象都能解析 for(int i=0;i<list.size();i++){ HashMap map=(HashMap)list.get(i); Iterator it=map.keySet().iterator(); while(it.hasNext()){ Object id=it.next(); System.out.println(""+map.get(id)); } System.out.println("/n"); } // ArticlesDAO dd=new ArticlesDAO(); // System.out.println(dd.count("articles")); } }
Bean:
package com.hcwy.basic.page; public class PageBean { private static final int DEFAULT_PAGE_SIZE = 20; private int pageSize = DEFAULT_PAGE_SIZE; // 每頁的記錄數 private int start=0; // 當前頁第一條數據在List中的位置,從0開始 private int page=1; //當前頁 private int totalPage=0; //總計有多少頁 private int totalCount=0; // 總記錄數 //////////////// // 構造函數 public PageBean() { } public PageBean(int page) { this.page=page; } ///////////////// public void setPage(int page) { if(page>0) { start=(page-1)*pageSize; this.page = page; } } public int getPage() { return page; } public int getPageSize() { return pageSize; } public PageBean setPageSize(int pageSize) { this.pageSize = pageSize; return this; } /** * @return the start */ public int getStart() { return start; } // 此位置根據計算得到 protected void setStart() { } /** * @return the totalCount */ public int getTotalCount() { return totalCount; } public void setTotalCount(int totalCount) { this.totalCount=totalCount; totalPage = (int) Math.ceil((totalCount + pageSize - 1) / pageSize); start=(page-1)*pageSize; } // 總頁面數根據總數計算得到 protected void setTotalPage() { } public int getTotalPage() { return totalPage; } /////////////// //獲取上一頁頁數 public int getLastPage() { if(hasLastPage()) { return page-1; } return page; } public int getNextPage() { if(hasNextPage()) { return page+1; } return page; } /** * 該頁是否有下一頁. */ public boolean hasNextPage() { return page < totalPage; } /** * 該頁是否有上一頁. */ public boolean hasLastPage() { return page > 1; } }
Metabase 是一款開源的數據分析和商業智能工具,允許企業用戶在幾分鐘內搭建起一個功能完善的數據探索和數據分析平臺,不需要編寫複雜的 SQL 查詢語句或者使用專業的數據可視化工具,就可以輕鬆地探索數據、創建圖表、構建儀表盤,從而洞察業務
本文介紹了 InnoDB 支持哪幾類表鎖,以及它們分別都用在什麼場景下,還介紹了其中兩類表鎖爲什麼要存在。 作者:操盛春,愛可生技術專家,公衆號『一樹一溪』作者,專注於研究 MySQL 和 OceanBase 源碼。 愛可生開源社區出品,
本文分享自華爲雲社區《MySQL怎樣處理排序⭐️如何優化需要排序的查詢?》,作者:菜菜的後端私房菜。 前言 在MySQL的查詢中常常會用到 order by 和 group by 這兩個關鍵字 它們的相同點是都會對字段進行排序,那查詢語句
本文分享自華爲雲社區《MySQL 給用戶添加 ALTER VIEW 的權限》,作者: 皮牙子抓飯。 MySQL 是一個廣泛使用的關係型數據庫管理系統,用於許多 Web 應用程序和企業級解決方案中。在 MySQL 中,用戶權限的管理是非常重要
轉載自tuoluzhe8521 導讀:通過簡化複雜的任務依賴關係, DolphinScheduler爲數據工程師提供了強大的工作流程管理和調度能力。在3.2.0版本中,DolphinScheduler帶來了一系列新功能和改進,使其在生產環
作者:多點,唐萬民 導讀 時隔 2 年, 在 TiDB 社區成都地區組織者馮光普老師的協助下,TiDB 社區線下地區活動再次來到成都。來自多點 Dmall 的國內數據庫負責人唐萬民老師,在《出海多雲架構,多點 TiDB 運維實戰》的主題分享
詳解 binlog 時間戳與 exec_time 的關係。 作者:李錫超,蘇商銀行DBA,負責數據庫和中間件運維和建設。擅長 MySQL、Python、Oracle,愛好騎行、技術研究和分享。 愛可生開源社區出品,原創內容未經授權不得隨意
01 背 景 播放鏈路是愛奇藝最重要的業務,鏈路穩定性極其重要,隨着愛奇藝用戶的不斷增長和熱播劇集的推廣,播放鏈路往往面臨着難以預估的用戶流量的突增,考
Vite 預構建的核心原理 1. 兼容性與性能的雙重目標 Vite 的預構建旨在解決兩個主要問題:兼容性和性能。對於兼容性,由於 Vite 在開發階段將所有代碼視爲原生 ES 模塊,因此需要將 CommonJS 或 UMD 格式的依賴轉
自動裝配原理分析 條件註冊機制 spring-context模塊中有兩個組件:Condition接口和@Conditional註解,在@Conditional註解中可以指定一組Condition實現, 通常@Conditional是和@Co
@EnableXxx註解 Spring有很多@EnableXxx這種形式的註解,類似於可以一鍵打開某項功能,相當於暴露給用戶的一種便捷的配置API,例如 @EnableAsync 激活異步執行能力,@EnableTransactionMan
條件註冊 Spring 4.0 引入條件註冊機制,暴露給用戶的API是@Conditional和Condition接口,把@Conditional聲明在一個 @Component類上,並接受一組條件(Condition實現),容器初始化期間
本文分享自華爲雲社區《Python函數與模塊的精髓與高級特性》,作者:檸檬味擁抱。 Python 是一種功能強大的編程語言,擁有豐富的函數和模塊,使得開發者能夠輕鬆地構建複雜的應用程序。本文將介紹 Python 中函數和模塊的基本使用方法,
Ai technology 前言 AppBuilder上線了低代碼製作組件功能,可以通過工作流的方式構建自定義組件,完成簡單Agent無法完成的複雜功能,使得生成的文本更加定製化,
Java將List結果分成3份執行 在Java編程中,有時候我們需要將一個List集合中的元素分成幾部分進行處理。這種情況下,我們可以使用Java的相關類庫和API來實現這一需求。在本文中,我們將介紹如何使用Java將List結果分成3份執