Java JDBC MySQL 封裝是一種常見的數(shù)據(jù)庫(kù)操作方式,在實(shí)際項(xiàng)目開發(fā)中常常用到。封裝的目的是為了簡(jiǎn)化數(shù)據(jù)庫(kù)操作過程,提高代碼復(fù)用率和可維護(hù)性。
使用 JDBC 時(shí),需要大量的樣板代碼,如加載驅(qū)動(dòng)程序、建立連接、創(chuàng)建語(yǔ)句對(duì)象、執(zhí)行 SQL 語(yǔ)句、關(guān)閉結(jié)果集、關(guān)閉語(yǔ)句對(duì)象、關(guān)閉連接等。如果每次操作數(shù)據(jù)庫(kù)都需要手動(dòng)編寫這些代碼,會(huì)極大地增加開發(fā)工作量。
因此,可以通過封裝的方式來簡(jiǎn)化這些操作。我們可以將連接、語(yǔ)句對(duì)象、結(jié)果集等操作封裝成一個(gè)工具類,以供其他類直接使用。對(duì)于常見的 CRUD 操作,可以再封裝成一個(gè) DAO 層,供業(yè)務(wù)層直接調(diào)用。這樣一來,就可以大大簡(jiǎn)化數(shù)據(jù)庫(kù)操作過程,提高開發(fā)效率。
public class DbUtil { private static final String DRIVER = "com.mysql.jdbc.Driver"; private static final String URL = "jdbc:mysql://localhost:3306/mydb"; private static final String USER = "root"; private static final String PASSWORD = "123456"; public static Connection getConnection() { Connection conn = null; try { Class.forName(DRIVER); conn = DriverManager.getConnection(URL, USER, PASSWORD); } catch (ClassNotFoundException | SQLException e) { e.printStackTrace(); } return conn; } public static void close(Connection conn, Statement stmt, ResultSet rs) { try { if (rs != null) { rs.close(); } if (stmt != null) { stmt.close(); } if (conn != null) { conn.close(); } } catch (SQLException e) { e.printStackTrace(); } } }
上述代碼是一個(gè) DbUtil 工具類的示例,用于獲取數(shù)據(jù)庫(kù)連接和關(guān)閉連接、語(yǔ)句對(duì)象、結(jié)果集等資源。通過這個(gè)類,可以大大簡(jiǎn)化數(shù)據(jù)庫(kù)操作中的代碼量。比如,執(zhí)行一個(gè)查詢語(yǔ)句:
Connection conn = null; PreparedStatement ps = null; ResultSet rs = null; try { conn = DbUtil.getConnection(); ps = conn.prepareStatement("select * from user where id = ?"); ps.setInt(1, id); rs = ps.executeQuery(); while (rs.next()) { // do something } } catch (SQLException e) { e.printStackTrace(); } finally { DbUtil.close(conn, ps, rs); }
上述代碼中,連接的獲取和關(guān)閉,語(yǔ)句對(duì)象的創(chuàng)建和關(guān)閉,結(jié)果集的遍歷等操作都使用了封裝好的工具類,將開發(fā)工作量降至最小。