JDBC連接數據庫的五個步驟、Mybatis是什么?可以解決jdbc的什么問題。


JDBC連接數據庫可以大概分為五個步驟:
1)加載驅動

2)建立連接

3)創建statement對象(創建執行者)

4)執行SQL(執行命令),返回結果

5)關閉數據庫

Statement對象執行不帶參數的簡單SQL語句

Prepared Statement對象用於執行預編譯SQL語句

Callable Statement對象用於執行對存儲過程的調用

1)利用類的反射來獲取驅動

加載 mysql驅動,Class.forName("com.mysql.jdbc.Driver");

2)獲得數據庫連接對象Connection

//通過驅動管理類獲取數據庫連接
conn = DriverManager.getConnection(DB_URL,USER,PASS);

3)實例化Statement對象,執行SQL

Statement stmt = conn.createStatement();
String sql = "SELECT id, name, url FROM websites";
ResultSet rs = stmt.executeQuery(sql);
或者// 定義sql語句 ?表示占位符
String sql = "select * from user where username = ?";
// 獲取預處理statement
preparedStatement = connection.prepareStatement(sql);
// 設置參數,第一個參數為sql語句中參數的序號(從1開始),第二個參數為設置的參數值
preparedStatement.setString(1, "王五");
// 向數據庫發出sql執行查詢,查詢出結果集
resultSet = preparedStatement.executeQuery();

// 遍歷查詢結果集
while (resultSet.next()) {
  System.out.println(resultSet.getString("id") + " " + resultSet.getString("username"));
}

4)遍歷結果集

 while(rs.next()){
 // 通過字段檢索
  int id  = rs.getInt("id");
  String name = rs.getString("name");
  String url = rs.getString("url");
    
 // 輸出數據
  System.out.print("ID: " + id);
  System.out.print(", 站點名稱: " + name);
  System.out.print(", 站點 URL: " + url);
  System.out.print("\n");
 }

5)關閉連接,釋放資源

jdbc更詳細一點的步驟:

1)加載數據庫驅動

2)創建並獲取數據庫連接

3)創建jdbc statement對象

4)設置sql語句

5)設置sql語句中的參數(使用preparedStatement)

6)通過statement執行sql並獲取結果

7)對sql執行結果進行解析

8)釋放資源(resultSet、preparedStatement、connection、connection)

JDBC問題總結:

1、數據庫連接創建、釋放頻繁造成系統資源浪費,從而影響系統性能。如果使用數據庫連接池可以解決此問題。
2、SQL語句在代碼中硬編碼,造成代碼不易維護,實際應用中sql變化的可能性較大,sql變動需要改變java代碼。
3、使用preparedStatement向占有位符號傳參數存在硬編碼,因為sql語句的where條件不一定,可能多也可能少,修改sql還要修改代碼,系統不易維護。
4、對結果集的解析也存在硬編碼,sql變化導致解析代碼變化,系統不易維護如果能將數據庫記錄封裝成pojo對象解析比較方便。

Mybatis可以解決jdbc編程的一些問題:

問題:1、數據庫連接創建、釋放頻繁造成系統資源浪費,從而影響系統性能。如果使用數據庫連接池可以解決此問題。
解決:在配置文件中配置數據庫連接池,使用連接處管理數據庫連接。
問題:2、SQL語句在代碼中硬編碼,造成代碼不易維護,實際應用中sql變化的可能性較大,sql變動需要改變java代碼。
解決:將Sql語句配置在XXXXmapper.xml文件中與java代碼分離。
問題:3、向sql語句傳參麻煩,sql語句where條件不一定,占位符需要和參數一 一對應
解決:Mybatis可以自動將java對象映射至sql語句,通過statement中的parameterType定義傳入參數的類型。
問題:4、對結果集解析麻煩,sql變化導致解析代碼變化,且解析前需要需要遍歷,如果能將數據庫記錄封裝陳pojo對象解析比較方便。
解決:Mybatis可以自動將sql執行結果映射至java對象,通過statement中的resultType定義輸出結果的類型。

MyBatis是什么

Mybatis是一個優秀的持久層框架,它對jdbc的操作數據庫的過程進行封裝,是開發者只需要關注SQL本身,而不需要花費精力去處理例如注冊驅動、創建connection、創建statement、手動設置參數、結果集檢索等jdbc繁雜的過程代碼。
Mybatis通過xml或注解的方式將要執行的各種statement(statement、preparedStatement、CallableStatement)配置起來,並通過java對象和statement中的sql進行映射成最終執行的sql語句,最后由Mybatis框架執行sql並將結果映射成java對象並返回。

 

 

 

參考:https://blog.csdn.net/qq_44543508/article/details/97007064


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM