接下來看看傳統的查詢方式(一個完整的查詢)
package com.java.mysql; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * <p> * Title: db.java * </p> * * @author daxiang * @version 1.0 創建時間:2018年5月22日 上午8:00:22 */ public class DB { public static void main(String[] args) { Connection con;// 聲明Connection對象 String driver = "com.mysql.jdbc.Driver";// 驅動程序名 String url = "jdbc:mysql://localhost:3306/db_student";// URL指向要訪問的數據庫名db_student String user = "root";// MySQL配置時的用戶名 String password = "123";// MySQL配置時的密碼 try { Class.forName(driver);// 加載驅動程序 con = DriverManager.getConnection(url, user, password);// 使用getConnection()方法,連接MySQL數據庫!! if (!con.isClosed()) System.out.println("成功連接mysql數據庫"); // 2.創建statement類對象,用來執行SQL語句!! Statement statement = con.createStatement(); // 要執行的SQL語句 String sql = "select * from admin"; // 3.ResultSet類,用來存放獲取的結果集!! ResultSet rs = statement.executeQuery(sql); System.out.println("-----------------"); System.out.println("執行結果如下所示:"); System.out.println("-----------------"); System.out.println("id" + "\t" + "admin" + "\t" + "password"); System.out.println("-----------------"); // 遍歷查詢結果集 while (rs.next()) { String id = rs.getString(1);// 獲取第一列數據 String username = rs.getString(2); // 獲取第二列數據 String pwd= rs.getString(3); // 獲取第三列數據 System.out.println(id + "\t" + username + "\t" + pwd);// 輸出結果 } rs.close(); con.close(); } catch (ClassNotFoundException e) { System.out.println("無法加載驅動"); e.printStackTrace();// 數據庫驅動類異常處理 } catch (SQLException e) { e.printStackTrace();// 數據庫連接失敗異常處理 } catch (Exception e) { e.printStackTrace(); } } }
上面完成了對db_student數據庫中admin表的查詢,而且得到了結果
但是這樣的並沒有實現代碼復用,當別的實體需要查詢或者其他操作時,還需要重復的連接等過程,所以我們對常用操作進行封裝,將數據庫的基本“增、刪、查、改”封裝到一個類里面
DbUtil.java(數據庫操作工具類)
package com.student.util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /* * 項目名稱: * * 文件名稱為:DbUtil.java * 文件創建人:daxiang * * 修改記錄: * 修改人 修改日期 備注 * * * * @author daxiang * @version * @time 2018年6月14日 上午9:16:44 * @copyright daxiang */ public class DbUtil { private Connection con;// 聲明Connection對象 public DbUtil() { String driver = "com.mysql.jdbc.Driver";// 驅動程序名 String url = "jdbc:mysql://localhost:3306/db_student?characterEncoding=utf8";// URL指向要訪問的數據庫名mysql String user = "root";// MySQL配置時的用戶名 String password = "123";// MySQL配置時的密碼 try { // 加載驅動 Class.forName(driver); // 獲取連接 con = DriverManager.getConnection(url, user, password); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } /** * 增、刪、改 * * @return * @throws SQLException */ public boolean execute(String sql) throws SQLException { // 獲取操作對象 Statement statement = con.createStatement(); // 執行 if (statement.executeUpdate(sql) > 0) { return true; } return false; } /** * 查詢 * * @param sql * @return * @throws SQLException */ public ResultSet executeQuery(String sql) throws SQLException { // 獲取操作對象 Statement statement = con.createStatement(); // 執行 return statement.executeQuery(sql); } }
AppConstants .java(常量參數類)
package com.demo.util; /* * 項目名稱: * * 文件名稱為:AppConstants.java * 文件創建人:daxiang * * @author daxiang * @version * @time 2018年6月13日 下午7:57:10 * @copyright daxiang */ public class AppConstants { // jdbc public static final String JDBC_URL = "jdbc:mysql://127.0.0.1:3306/db_student?characterEncoding=utf8"; public static final String JDBC_USERNAME = "root"; public static final String JDBC_PASSWORD = "123"; public static final String JDBC_DRIVER = "com.mysql.jdbc.Driver"; }
這樣封裝后我們就可以簡化服務類中的代碼,請看