13161216443

您所在位置: 首頁> 學習課程> java培訓 | MyBatis系列:MyBatis未出世之前我們那些痛苦的經歷

java培訓 | MyBatis系列:MyBatis未出世之前我們那些痛苦的經歷

發布百知教育 來源:學習課程 2019-12-03

MyBatis系列目標:從入門開始開始掌握一個高級開發所需要的MyBatis技能。

這是MyBatis系列第1篇。

本篇內容

  1. java操作數據庫相關的各種技術介紹

  2. 這么多技術,如何選擇?

  3. 這么多技術,為什么我們選擇的是mybatis

不知道大家是否還記得使用jdbc如何操作數據庫?
加載驅動、獲取連接、拼接sql、執行sql、獲取結果、解析結果、關閉數據庫,這些操作是純jdbc的方式必經的一些過程,每次操作數據庫都需要寫這些,但是真正和開發相關有:拼接sql、執行sql、解析結果,這幾個可能不同,而其他的幾個步驟是所有db操作共用的一些步驟,所以純jdbc的方式重復性的代碼太多了,如果每個操作都使用這種方式會耗費大量的時間。
純jdbc的方式,sql多數都是寫在java代碼中,我還記得剛開始工作的時候接觸的第一個項目就是jdbc寫的,當時jdbc是寫在jsp中,調試和維護起來是相當麻煩的。
還有就是動態sql方面:面對于各種復雜的條件查詢,需要在代碼中寫很多判斷,拼接sql,這種情況估計大家都有經歷過,應該是有同感的,各種判斷各種拼接沒有統一的規范,各種寫法也是千奇百怪,最終導致系統難以維護。
上面這些問題使系統開發緩慢、難以維護,后面就出現了各種優秀的框架來解決這些問題,下面我們就來看一下常見的db框架及他們的優缺點,以及我們應該如何選擇?

Hibernate

這個框架學過,但是實際工作中所有接觸的項目都未曾使用過hibernate。

介紹hibernate之前,我們先了解一下什么是ORM?

ORM(Object Relational Mapping):對象關系映射,簡單點說就是將數據庫中的表和java中的對象建立映射關系,可以讓我們操作對象來間接的操作數據庫。

ORM最好的框架就是hibernate,hibernate可以讓你通過java對象來間接的操作數據庫,java對象就相當于數據庫中表的代理一樣,當你想刪除表的數據的時候,不需要自己寫delete語句發給數據庫,只需要對hibernate說我需要刪除哪個java對象就行了,hibernate自動根據你的操作去生成db需要的sql然后發給db去執行,對于開發者來說隱藏了底層jdbc和db的交互過程,可能開發者不需要掌握數據庫技術,就可以通過這個框架直接操作數據庫,比如對數據庫進行增、刪、改、查可能需要開發者會寫各種sql腳本,還有每種數據庫的sql腳本語法也不一樣,剛開始項目使用的是mysql,你按照mysql的語法寫的,后面可能要切換到oracle,語法上面需要變動,但是如果你使用hibernate,這些都不是問題,你不會sql也沒關系,而你只需要像操作對象一樣去操作數據庫,hibernate會根據你的操作和db的類型自動生成操作所需要的sql,一種寫法能夠跨多種數據庫運行。

優點

  1. 簡化了整個jdbc操作過程

  2. 對于開發者來說不需要關心sql了,只需要去操作對象就可以了,hibernate可以幫我們自動生成所需要的sql

  3. 代碼移植性比較好,通過hibernate操作db都是通過操作對象來進行的,而hibernate會根據我們的操作和db的類型生成符合各種db要求的sql,如果我們需要切換db的類型,hibernate會自動適應,對于開發者業務代碼來說不需要做任何業務代碼上的調整

  4. 開發效率比較高

缺點

  1. sql優化比較艱難,各種操作最終發給db的sql是由hibernate自動生成的,對于開發者來說如果想干預最終需要執行的sql,相對來說比較困難

  2. hibernate入門比較容易,但是想成為高手學習成本比較高

  3. 對于復雜的動態sql,代碼中也需要寫很多判斷進行組裝,動態sql這塊的支持比較欠缺

如果做一些簡單的系統,開發周期也比較緊急,對sql的優化要求也不是很高,可以使用hibernate。

JdbcTemplate

jdbctemplate是在spring框架的基礎上開發的一個jdbc框架,所以對spring是有依賴的,它對jdbc做了封裝,隱藏了各種重復的操作,使用時只需傳入:需要執行的sql、參數以及對于結果如何解析的程序就可以了,使用起來還是很方便的,但是面對與動態sql,它也是無能為力了。整體上來說,jdbctemplate相對于純jdbc隱藏了很多重復性的操作,對于sql的寫法和結果的組裝上完全交給了開發者自己去控制,在系統中使用也可以幫助我們節約很多時間,而且學習相當簡單,花2個小時就學會了,也是很優秀的一個框架。

MyBatis

mybatis相對于純jdbc來說,也隱藏了重復性的工作,mybatis是一個半自動化的orm框架,為什么說是半自動化的呢,因為他需要我們自己去寫sql,而他做的更好的地方就是動態sql的支持上面,而上面說的各種技術,面對與動態sql只能自己寫很多判斷去組裝sql,而這些判斷和組裝在mybatis中實現起來就非常簡單了,完全由mybatis去幫我們實現了。mybatis將sql交由開發者去控制,所以在sql的優化方面,開發者可以隨心所欲,也就是說mybatis將重復性的工作優化到了極致:操作db的過程、動態sql的拼裝、結果和對象的映射,這些mybatis都幫我們實現的很好,而讓我們將更多的經歷花在sql的寫法和優化上面,所以毫無疑問mybatis使用人數和公司也是最多的,大部分互聯網公司基本上都會使用mybatis,其他2種可以不會,但是mybatis你必須要會。

幾種技術的對比

后面的文章我們將正式詳解mybatis所有知識點,理論+實戰的方式,帶領大家成為mybatis高手,請大家關注!


注釋:本文內容來自公眾號路人甲java


java培訓班:http://www.akpsimsu.com/java2019


http://www.akpsimsu.com/java2019


上一篇:java培訓班 | Java 是如何優雅地處理NPE問題?

下一篇:應屆生去公司找個Java程序員的職位需要什么技能?

相關推薦

www.akpsimsu.com

有位老師想和您聊一聊

關閉

立即申請