今天看了一篇有關mybatis非常好的文章,順便寫了一下學習心得。
一。mybatis的框架設計
mybatis框架大致可以分為四個部分:
(1)介面層
(2)資料處理層:mybatis的核心 主要
a.動態sql的建立 --- 乙個語句(乙個/等標籤對對應乙個statement物件)
b.sql語句執行
c.封裝查詢結果集為list
(3)框架支援層:a.事務管理機制 --- 如jdbc原生事務管理的commit(),rollback(),close() --- 用sqlsession物件執行
b.資料庫連線池管理機制 --- 如標籤中的type='pooled'即為使用資料庫連線池 --- 多個資料庫連線物件(即connection物件),已被占用的狀態為(active),未被占用的為(idle)
c.快取機制 --- 為減小伺服器和資料庫的壓力和提公升效率 --- 如sqlsession(一級快取)、sqlsessionfactory(二級快取) ---- 每乙個statement物件有乙個自己對應的快取
(4)引導層:引導層是配置和啟動mybatis配置資訊的方式。我使用的是mybatis.xml配置方式
二。mybatis的一些核心元件
該圖**於原部落格:
博主主頁:
可通過sqlsession.getconfiguration()獲得configuration物件
executor的作用:(1)根據傳遞的引數,通過生成boundsql物件,完成sql語句的動態解析,以便statementhandler使用
(2)為查詢建立快取,以提高效能。(這裡應該是每次查詢,先看是否有相應快取,沒有快取再去資料庫中執行sql語句查詢)
(3)建立jdbc的statement連線物件,傳遞給statementhandler物件,返回list查詢結果
statementhandler物件主要工作:
(1)對於jdbc的preparedstatement物件,會對其佔位符?進行設定。(通過parameterhandler物件)
(2)通過listquery(statement statement, resultsethandler resultsethandler)方法執行statement,並將返回結果resultset封裝成list
Mybatis相關的問題
mybatis 中 與 的區別 是將傳入的值當做字串的形式,比如傳的都是1,這邊sql是 select from t user where id 1 是將傳入的資料直接顯示生成sql語句,這邊sql是 select from t user where id 1 使用 可以很大程度防止sql注入 一般...
MyBatis的執行原理
答案就是動態 關於動態 的內容,博主在之前的博文中已經詳細介紹過了,此處不再贅述。本文主要探析一下mybatis在執行資料庫操作時的執行原理。package com maowei learning orm dao import com maowei learning orm user public ...
Mybatis的框架原理
1 配置檔案 sqlmapconfig.xml 全域性配置檔案 資料來源,事物等執行時資訊 2 呼叫 sqlsessionfactory 作用 生產會話 3 呼叫 sqlsession 作用 作為面向程式設計師的介面,程式設計師可以呼叫sqlsession來進行增刪改查。預設實現 defaultsq...