MyBatis實戰總結

2021-09-11 12:37:08 字數 1535 閱讀 2180

前言:mybatis的前身是ibatis,它是乙個資料持久層框架。封裝優化了普通jdbc的過程,如資料庫連線的建立、設定sql語句引數、執行sql語句、事務、結果對映以及資源釋放等。

mybatis是乙個支援普通sql查詢、儲存過程和高階對映的優秀持久層框架,使用簡單的xml或註解用於配置和原始對映,將pojo和資料庫記錄進行相互對映。 mybatis框架分析discovery 我們知道最基礎的jdbc操作為以下七個步驟: (1)載入jdbc驅動 (2)建立並獲取資料庫連線 (3)建立jdbc statement物件 (4)設定sql語句的傳入引數 (5)執行sql語句並獲得結果 (6)處理執行結果 (7)釋放相關資源

資料庫連線的建立、獲取和釋放**是可以復用的,而且每一次操作都進行資料庫連線的建立和關閉是沒有必要的,是浪費資源和影響效能的。使用資料庫連線池能夠很好的解決這些問題。由於可能會使用不同的連線池,比如採用dbcp的連線池,或者採用容器本身的jndi資料庫連線池,所以可以通過datasource進行解耦。 使用spring容器進行管理的mybatis資料庫連線池配置**如:

《bean id = "datasource" class = "org.springframework.jndi.jndiobjectfactorybean"》

《property name="jndiname" value = "$"》《/property》

《/bean》

《bean id="sessionfactory" class="org.mybatis.spring.sqlsessionfactorybean"》

《property name="datasource" ref="datasource" /》

《property name="configlocation" value="classpath:/config/mybatisconfig.xml"/》

《/bean》

select * from user where

《choose》

《if test ="startdate != null and startdate != '' and enddate != null and enddate != '' "》

and create_date >= # and create_date <= #

《/if》

《otherwise》

and create_date >= sysdate - 7 and create_date <= sysdate

《/otherwise》

《/choose 》

這樣的if判斷,其實是完全沒有必要的,我們可以很簡單的採用decode來解決預設值問題:

select * from user where

create_date >= decode(#,null,sysdate-7, #)

and create_date <= decode(#,null,sysdate,#)

不過if與choose判斷分支是不可能完全去除的,但是推薦使用sql原生的方式來解決一些動態問題,而不應該完全依賴mybatis來完成動態分支的判斷,因為判斷分支過於複雜,而且難以維護。

Mybatis學習總結(三) 實戰

前面兩篇文章已經簡單介紹了mybatis並且講述了如何快速搭建mybatis環境,本文簡單介紹專案開發中主要用到的功能點,包括以下知識點 1.resultmap的編寫 2.基本select 3.update語句,標籤 4.單層foreach的用法 5.delete語句 6.轉義 符號 7.動態sql...

Mybatis的分表實戰

前言 以前寫 關於mysql的分庫分表已被中介軟體服務所支援,業務 涉及的sql已規避了這塊.它對擴充套件友好,你也不知道到底他分為多少庫,多少表,一切都是透明的.不過對於小的團隊 工作室而言,可能就沒有那麼強大的分布式中介軟體的基礎設施支援了,而當資料庫上去的時候,分庫分表就需要客戶端client...

原理總結 mybatis

為了便於持久層操作的維護,通過編寫xml sql相關 提供靈活的資料庫訪問實現 封裝了jdbc 提供了資料庫連線池管理 提供了sql統一管理 xml 提供了重複sql語句塊的重複利用機制 提供了根據輸入引數,動態組成sql的功能,封裝了sql具體執行操作 提供了返回的結果,根據配置,對映到相應型別的...