mybatis连接oracle_Mybatis 系列 0:初恋Mybatis
學習 Mybatis 之前,我們可以通過比較之前使用 JDBC 操作持久層的代碼,再次重溫一下 JDBC 的噩夢。
首先回憶一下操作 JDBC 的步驟:
口訣:「賈璉欲執事」
賈:加載注冊驅動
璉:獲取連接對象
欲:創建語句對象
執:執行SQL語句
事:釋放資源
測試用例:
測試用例1測試用例2好了,回顧了以上兩個例子,使用 JDBC 來操作數據的代碼是不是很噩夢?
代碼不僅又臭又長,而且不易維護,又有 SQL 注入的風險,每次操作都新創建一個 Connection 對象,用完就關閉,而且創建 Connection 的成本非常大(解決方案:使用數據庫連接池 DataSource),加上針對不同的表查詢還要寫不一樣的結果集處理器,等等各種問題。。。
如果每次的 CURD 都要這樣寫,那簡直就是 CRUD copy_boy 了。
那既然使用 JDBC 這么難受,能不能不要它了?
哈哈,不能。原因是,在 Java 中,數據庫存取技術只能通過使用 JDBC 訪問數據庫。
如果沒有 JDBC,會帶來什么問題呢?
0:我們訪問數據庫操作就沒有規范;
1:因為數據庫廠商是不一樣的,不同的數據庫廠商就會執行不同的訪問 DataBase 規則;
2:比如我今天在 A 公司苦逼地寫著代碼,咱們大 A 公司使用的是 MySQL,好不容易學完了如何使用 MySQL 去訪問數據庫,卻遇上了今年的裁員潮。。。歷經千辛萬苦,關燈吃面過后,我來到了 B 公司,B 公司財大氣粗,使用的是 Oracle,作為小白的我,又得重新學習訪問數據庫的方法,這回是 Oracle 的,下回去到 2B 公司,如果 2B 公司使用的是 IBM 的 DB2,那簡直得吐血。。
造成上述問題的根本原因就是各大數據廠商沒有統一的訪問數據庫規則。
這時,SUN 公司站出來,說:我來統一指定所有數據庫的訪問規則,你們各大數據庫廠商必須 follow,否則不支持你們的數據庫服務器。
有了規范之后,針對不同的數據庫服務器,就只需要一套技術即可。
這個規范稱之為 JDBC。
JDBC(Java DataBase Connectivity)是一種用于執行 SQL 語句的 Java API,可以為多種關系數據庫提供統一訪問,它由一組用 Java 語言編寫的類和接口組成。JDBC 提供了一種基準,據此可以構建更高級的工具和接口,使數據庫開發人員能夠編寫數據庫應用程序。(百度百科)
既然我們不能拋棄 JDBC,那有什么方法優化其缺點,成為 CEO,迎娶白富美,走上人生巔峰呢?
盒盒盒。。。盒盒。。想多了。。
還真有,那就是站在巨人的肩膀上,使用他們已經寫好的框架,如:Hibernate、iBatis 和 Mybatis 等(底層都為 JDBC)。
Mybatis 就是我們要重點學習的持久層框架了。
那,Mybatis 是什么呢?
Mybatis 是支持普通 SQL 查詢,存儲過程和高級映射的持久層框架,嚴格上說應該是一個 SQL 映射框架。
幾乎所有的 JDBC 代碼和參數的手工設置以及結果集的處理器都可以交給 Mybatis 完成,而這只需要簡單的 XML 或者注解就可以完成,其前身是 iBatis。
Mybatis 核心為動態代理 MapperProxy。
核心組件有:
SqlSessionFactoryBuilder(構建器):根據配置信息或 Java 代碼來構建 SqlSessionFactory 對象,作用:創建SqlSessionFactory對象。
SqlSessionFactory(會話工廠):好比是 DataSource,線程安全的,在應用運行期間不用重復創建多次,建議使用單例模式,作用:創建 SqlSession 對象。
SqlSession(會話):好比是 Connection,線程不安全的,每次使用開啟新的 SqlSession 對象,使用完正常關閉,默認使用 DefaultSqlSession。提供操作數據庫的增刪改查方法,可以調用操作方法,也可以操作 Mapper 組件。
Executor(執行器):SqlSession 本身不能直接操作數據庫,需要 Executor 來完成,該接口有兩個實現:緩存執行器(缺省)、基本執行器。
MapperStatement:映射語句封裝執行語句時的信息如 SQL、輸入參數、輸出結果。
原理圖那,什么是框架呢?
軟件框架(software framework),通常指的是為了實現某個業界標準或完成特定基本任務的軟件組件規范,也指為了實現某個軟件組件規范時,提供規范所要求之基礎功能的軟件產品。
簡而言之,框架就是制定一套規范或者規則(思想),大家(程序員)在該規范或者規則下工作。或者說使用別人搭好的舞臺來做編劇和表演。
其實說白了,框架就是一系列 jar 包,就是抄大神的作業,直接拿他們已經封裝好的類和接口過來用就好了。
在 Java 中,我們使用框架或者是別人已經寫好的類的話,一般是直接引入 jar 包,就相當于是我寫好了 Java 源文件,經過編譯之后生成的一系列 class 字節碼文件,這樣也解決了到處 copy,有時還 copy 不全的問題。
java運行tips:查看官方文檔是學習一門新語言最有效的方法。
系列預告:Mybatis 系列 1:ORM 框架思想以及開發前準備
關注「阿澤學長」總結
以上是生活随笔為你收集整理的mybatis连接oracle_Mybatis 系列 0:初恋Mybatis的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: access游戏库不显示 ea_英伟达上
- 下一篇: Linux-lrzsz命令[通俗易懂](