日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

JDBC连接数据库的五个步骤、Mybatis是什么?可以解决jdbc的什么问题。

發(fā)布時間:2023/12/15 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 JDBC连接数据库的五个步骤、Mybatis是什么?可以解决jdbc的什么问题。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

JDBC連接數(shù)據(jù)庫大概可以分為五個步驟:
1)加載驅(qū)動

2)建立連接

3)創(chuàng)建statement對象(創(chuàng)建執(zhí)行者)

4)執(zhí)行SQL(執(zhí)行命令),返回結(jié)果

5)關(guān)閉數(shù)據(jù)庫

Statement對象執(zhí)行不帶參數(shù)的簡單SQL語句

Prepared Statement對象用于執(zhí)行預編譯SQL語句

Callable Statement對象用于執(zhí)行對存儲過程的調(diào)用

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

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

2)獲得數(shù)據(jù)庫連接對象Connection

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

3)實例化Statement對象,執(zhí)行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);
// 設(shè)置參數(shù),第一個參數(shù)為sql語句中參數(shù)的序號(從1開始),第二個參數(shù)為設(shè)置的參數(shù)值
preparedStatement.setString(1, "王五");
// 向數(shù)據(jù)庫發(fā)出sql執(zhí)行查詢,查詢出結(jié)果集
resultSet = preparedStatement.executeQuery();

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

4)遍歷結(jié)果集

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

5)關(guān)閉連接,釋放資源

jdbc更詳細一點的步驟:

1)加載數(shù)據(jù)庫驅(qū)動

2)創(chuàng)建并獲取數(shù)據(jù)庫連接

3)創(chuàng)建jdbc statement對象

4)設(shè)置sql語句

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

6)通過statement執(zhí)行sql并獲取結(jié)果

7)對sql執(zhí)行結(jié)果進行解析

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

JDBC問題總結(jié):

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

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

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

MyBatis是什么

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

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

總結(jié)

以上是生活随笔為你收集整理的JDBC连接数据库的五个步骤、Mybatis是什么?可以解决jdbc的什么问题。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。