JDBC 基本流程 1. 首先向項目中導入jar包 2. 創建如下代碼 3. 使用方法 載入properties配置文件 將資料庫的信息配置在properties中可以增加代碼的靈活性,修改的時候不需要去改動代碼. 可以將properties文件放在src文件夾下麵,這樣編譯完以後propertie ...
JDBC
基本流程
首先向項目中導入jar包
創建如下代碼
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/mybase";
String username="root";
String password="123";
con = DriverManager.getConnection(url, username, password);
- 使用方法
String sql = "select * from user where name=?"; // sql語句
PreparedStatement stmt = connection.prepareStatement(""); // 預編譯
stmt.setString(1, "lll"); // 給?占位符賦值
ResultSet result = stmt.executeQuery(); // 取得查詢的結果集對象
while(result.next()){ // 遍歷結果集,如果結果集中沒有對象的話result.next()會返回null
String str = result.getString(1); // 取出結果集中的對象(列,列名)
}
stmt.executeUpdate(); // 數據更新使用的方法
connection.close(); // 關閉資源
stmt.close();
載入properties配置文件
將資料庫的信息配置在properties中可以增加代碼的靈活性,修改的時候不需要去改動代碼.
可以將properties文件放在src文件夾下麵,這樣編譯完以後properties文件就會編譯到bin文件夾中,可以通過類載入器獲取.
InputStream in = JDBCUtilsConfig.class.getClassLoader().getResourceAsStream("database.properties");
JDBC工具類DBUtils
- 封裝了JDBC的操作,減少代碼量
基本操作
- 首選創建DBUtils對象,傳遞的參數為DateSource
private static QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
數據的更新操作, 可變參數的位置可以依次傳遞參數,也可以傳遞一個數組
qr.update(sql,Object... param)
DBUtils實現了查詢結果自動封裝到Bean Object List Map 操作,所以使得對資料庫的操作變得更加簡單
query( String sql, ResultSetHandler<T> rsh, Object... params) // query的構造函數,可以傳遞ResultSetHandler來實現查詢結果的自動封裝
ArrayHandler // 將結果集中的第一條記錄封裝到一個Object[]數組中,數組中的每一個元素就是這條記錄中的每一個欄位的值
ArrayListHandler // 將結果集中的每一條記錄都封裝到一個Object[]數組中,將這些數組在封裝到List集合中。
BeanHandler // 將結果集中第一條記錄封裝到一個指定的javaBean中。
BeanListHandler // 將結果集中每一條記錄封裝到指定的javaBean中,將這些javaBean在封裝到List集合中
ColumnListHandler // 將結果集中指定的列的欄位值,封裝到一個List集合中
ScalarHandler // 它是用於單數據。例如select count(*) from 表操作。
MapHandler // 將結果集第一行封裝到Map集合中,Key 列名, Value 該列數據
MapListHandler // 將結果集第一行封裝到Map集合中,Key 列名, Value 該列數據,Map集合存儲到List集合
qr.query(conn, sql, new ArrayHandler(), params); // 然後返回值為對應的Handler返回的類型
連接池
實際開發中“獲得連接”或“釋放資源”是非常消耗系統資源的兩個過程,為瞭解決此類性能問題,通常情況我們採用連接池技術,來共用連接Connection。這樣我們就不需要每次都創建連接、釋放連接了,這些操作都交給了連接池,當需要使用Connection時候,可以直接從連接池中獲取Connection,當我們用完了Connection時,調用close()方法把這個Connection放回到池中,減少了系統的開銷.