關於mysql,需要掌握的基礎(二):JDBC和DAO層

一樂樂發表於2022-02-07

目錄

關於mysql,需要掌握的基礎(二):JDBC和DAO層

1、瞭解jdbc是什麼?

2、載入註冊驅動:為什麼Class.forName(“com.mysql.jdbc.Driver”); 一行程式碼就可以完成載入、註冊驅動操作?

3、原始方式-獲取連線物件:

4、JDBC 運算元據庫的步驟:【賈璉欲執事】

5、瞭解DAO層是什麼?

6、DAO誕生的背景:

■ 以前我們是把資料庫的操作程式碼編寫到客戶端裡:

■ DAO封裝了資料的增刪改操作,資料訪問介面。

7、語句物件PreparedStatement 和Statement 的比較:

8、開發中獲取自動生成主鍵:

9、掌握連線池(也叫資料來源DataSource)-獲取連線物件

✿ 從jdbc—》dao層—》myBatis:

jdbc封裝的dao層的模板類jdbcTemplate來運算元據庫:


關於mysql,需要掌握的基礎(二):JDBC和DAO層

1、瞭解jdbc是什麼?

■ java DataBase Connectivity,java連線資料庫,通過java程式碼運算元據庫,可以進行CRUD

執行SQL語句的java API,JDBC 本身是java連線資料庫的一個標準,【需要載入連線驅動程式-連線資料庫的jar包】,jdbc是進行資料庫連線的抽象層,由java編寫的一組類和介面組成,介面的實現由各個資料庫廠商來完成。

2、載入註冊驅動:為什麼Class.forName(“com.mysql.jdbc.Driver”); 一行程式碼就可以完成載入、註冊驅動操作?

① Class.forName(); 會把com.mysql.jdbc.Driver 這份位元組碼

② 當一份位元組碼別載入進JVM時,就會執行該位元組碼中的靜態程式碼塊,在該靜態程式碼塊中有: java.sql.DriverManager.

3、原始方式-獲取連線物件:

  1):載入註冊驅動:

        Class.forName(“com.mysql.jdbc.Driver”);

   2):獲取連線:通過DriverManger類的getConnection方法來獲取連線物件:

              Connection conn = DriverManger.getConnection(url,username, password);

4、JDBC 運算元據庫的步驟:賈璉欲執事

     1)賈:載入註冊驅動

      2)璉:獲取連線物件

      3)欲:建立語句物件

      4)執:執行SQL語句

      5)事:釋放資源

5、瞭解DAO層是什麼?

■ Data Access Object 資料訪問物件,跟jdbc一樣本身是一個介面,封裝了資料的增刪改查(CRUD)操作。

6、DAO誕生的背景:

以前我們是把資料庫的操作程式碼編寫到客戶端裡:

跟業務程式碼混雜在一起;②而且每次運算元據庫時都需要重複書寫程式碼。

■ DAO封裝了資料的增刪改操作,資料訪問介面。

7、語句物件PreparedStatement 和Statement 的比較:

■ 拼接sql方面和安全方面【注入問題】

8、開發中獲取自動生成主鍵:

■ 獲取主鍵的作用:

---註冊時,一次性填寫過多資訊,不友好,分成兩次填寫唄【**獲取主鍵,將其傳遞給第二個填寫註冊資訊介面**】

原始方式-獲取主鍵:

Statement st = null;
st.executeUpdate(sql.toString(), Statement.RETURN_GENERATED_KEYS);
//去獲取自動生成的主鍵
ResultSet keyRs = st.getGeneratedKeys();
if(keyRs.next()) {
    Long id = keyRs.getLong(1);//獲取第一列
    System.out.println(id);
    return id;
 }

9、掌握連線池(也叫資料來源DataSource)-獲取連線物件

常用的連線池中的druid(德魯伊):阿里巴巴提供的,號稱世界最好的連線池

 

✿ 從jdbc—》dao層—》myBatis:

jdbc封裝的dao層的模板類jdbcTemplate來運算元據庫:

//增刪改操作模板: public static update(String sql, Object...params)
//查詢操作模板:public static <T> T query(String sql, IResultSetHandler rsh,Object...params)
//-----------------------------------------------------------------------------

//還封裝了BeanHandler、BeanListHandler
  BeanHandler 處理結果類[結果集只有一行資料,把一行結果集資料封裝成一個物件]
  BeanListHandler 處理結果類[結果集有多行資料,把每一行結果集資料封裝成一個物件,儲存到List集合中]   

● 使用BeanHandler和BeanListHandler要注意,物件的屬性名和表中的列名需要相同,不同報錯。

jdbc--->jdbc模板(通用結果集處理器[需要保證類的屬性名和表名相同])----》ORM框架(MyBatis框架)

相關文章