Java基礎之原生JDBC操作資料庫
阿新 • • 發佈:2021-10-28
前言
日常開發中,我們都習慣了使用ORM框架來幫我們操作資料庫,本文複習、記錄Java如何使用原生JDBC操作資料庫
程式碼編寫
封裝幾個簡單方法
find查詢方法
findOne查詢方法
update執行方法
package cn.huanzi.qch.util; import java.sql.*; import java.util.ArrayList; import java.util.HashMap; /** * 原生jdbc操作資料庫工具類 */ public class jdbcUtil { //資料庫連線:地址、使用者名稱、密碼private final String url; private final String username; private final String password; public jdbcUtil(String url,String username,String password){ this.url = url; this.username = username; this.password = password; } public jdbcUtil(String url,String username,String password,String driver){this.url = url; this.username = username; this.password = password; try { /* 同時需要引入相關驅動依賴 1、MySQL: com.mysql.cj.jdbc.Driver 2、Oracle: oracle.jdbc.driver.OracleDriver 3、pgsql: org.postgresql.Driver*/ //載入驅動 Class.forName(driver); } catch (ClassNotFoundException e) { e.printStackTrace(); } } /** * 獲取 Connection 連線 */ private Connection getConnection() { Connection conn = null; try { conn= DriverManager.getConnection(url, username, password); conn.setAutoCommit(true); } catch (SQLException e) { System.err.println("獲取Connection連線異常..."); e.printStackTrace(); } return conn; } /** * 關閉 Connection 連線 */ private void close(Connection conn){ try { conn.close(); } catch (SQLException e) { System.err.println("關閉Connection連線異常..."); e.printStackTrace(); } } /** * 查詢 */ public ArrayList<HashMap<String,Object>> find(String sql, Object[] params) { ArrayList<HashMap<String, Object>> list = new ArrayList<>(); //獲取連線 Connection conn = getConnection(); PreparedStatement ps; ResultSet rs; try { //設定SQL、以及引數 ps = conn.prepareStatement(sql); if (params != null) { for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } } //執行查詢 rs = ps.executeQuery(); //獲取查詢結果 ResultSetMetaData rm = rs.getMetaData(); int columnCount = rm.getColumnCount(); //封裝結果集 while (rs.next()) { HashMap<String, Object> map = new HashMap<>(columnCount); for (int i = 1; i <= columnCount; i++) { String name = rm.getColumnName(i).toLowerCase(); Object value = rs.getObject(i); map.put(name,value); } list.add(map); } //關閉連線 close(conn); } catch (Exception e) { System.err.println("執行 jdbcUtil.find() 異常..."); e.printStackTrace(); } return list; } public HashMap<String,Object> findOne(String sql, Object[] params){ ArrayList<HashMap<String, Object>> list = find(sql, params); return list.size() > 0 ? list.get(0) : null; } /** * 更新 */ private boolean update(String sql, Object[] params){ boolean flag = false; //獲取連線 Connection conn = getConnection(); PreparedStatement ps; try { //設定SQL、以及引數 ps = conn.prepareStatement(sql); if (params != null) { for (int i = 0; i < params.length; i++) { ps.setObject(i + 1, params[i]); } } //執行 flag = ps.execute(); } catch (SQLException e) { System.err.println("執行 jdbcUtil.update() 異常..."); e.printStackTrace(); } //關閉連線 close(conn); return flag; } }
效果
執行main函式
public static void main(String[] args) { //獲取連線 jdbcUtil jdbcUtil = new jdbcUtil("jdbc:mysql://localhost/jfinal_demo","root","123456"); // find查詢 ArrayList<HashMap<String, Object>> list = jdbcUtil.find("select * from user", null); for (HashMap<String, Object> map : list) { System.out.println(map); } System.out.println("----------------------------"); //update執行、findOne查詢 jdbcUtil.update("delete from user where user_id = ?", new Object[]{"4"}); jdbcUtil.update("insert into user values (?,?)", new Object[]{"4","王麻子"}); jdbcUtil.update("update user set user_name = ? where user_id = ?", new Object[]{"王麻子子","4"}); HashMap<String, Object> map = jdbcUtil.findOne("select * from user where user_id = ?", new Object[]{"4"}); System.out.println(map); }
後記
原生JDBC操作資料庫暫時先記錄到這,後續再進行補充
版權宣告
作者:huanzi-qch 出處:https://www.cnblogs.com/huanzi-qch 若標題中有“轉載”字樣,則本文版權歸原作者所有。若無轉載字樣,本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出原文連結,否則保留追究法律責任的權利.AD廣告位(長期招租,如有需要請私信)
【基塔後臺】免費後臺管理系統,低程式碼快速搭建管理後臺【騰訊雲】雲產品限時秒殺,爆款1核2G雲伺服器,首年74元!
【騰訊雲】境外1核2G伺服器低至2折,半價續費券限量免費領取!
【騰訊雲】星星海SA2雲伺服器,1核2G首年99元起,高性價比首選!
【騰訊雲】中小企業福利專場,多款剛需產品,滿足企業通用場景需求,雲伺服器2.5折起!
【阿里雲】新老使用者同享,上雲優化聚集地!
【阿里雲】最新活動頁,上新必買搶先知,勁爆優惠不錯過!
【阿里雲】輕量應用伺服器2核2G 低至60元/年起!香港與海外伺服器最低24元/月起!
【阿里雲】ECS例項升級、續費,享低至 6.3折 限時折扣!
捐獻、打賞
請注意:作者五行缺錢,如果喜歡這篇文章,請隨意打賞!支付寶
微信
QQ群交流群
QQ群交流群有事請加群,有問題進群大家一起交流!