1. 程式人生 > >九、Mybatis之介面式程式設計的原理(大致流程介紹)

九、Mybatis之介面式程式設計的原理(大致流程介紹)

(一)Mybatis之介面式程式設計的原理(大致流程介紹)

1、載入配置資訊……
2、通過載入配置資訊載入一個代理工廠Map(PS:這個Map存放的是介面Class與對應的代理工廠的對映)
3、通過介面的Class從代理工廠Map取出對應的代理工廠
4、通過代理工廠例項化一個代理類
5、用這個代理類生成一個代理例項返回出去”

return (T) Proxy.newProxyInstance(type.getClassLoader(), new Class[]{type}, new MapperProxy());

6、當通過這個代理例項去呼叫介面中的方法時,就會觸發“動態代理類new MapperProxy()

”的invoke()方法,在invoke()方法中繼續執行如下步驟:
(1)通過介面與method獲取對應的配置檔案中的資訊
(2)介面名稱.方法名==namespace.id
(3)通過配置檔案中的資訊獲取SQL語句的型別
(4)根據SQL語句型別呼叫sqlSession對應的增、刪、改、查方法
備註:當SQL語句型別是查詢時,根據返回值的型別是List、Map、Object,分別呼叫selectList、selectMap、selectOne方法

總結:
說白了,介面式程式設計就是通過一系列的動態代理方法,呼叫非介面式程式設計中的呼叫sql語句的方法(sqlSession.selectList()、sqlSession.delete()方法等)

相關推薦

Mybatis介面程式設計原理大致流程介紹

(一)Mybatis之介面式程式設計的原理(大致流程介紹) 1、載入配置資訊…… 2、通過載入配置資訊載入一個代理工廠Map(PS:這個Map存放的是介面Class與對應的代理工廠的對映) 3、通過介面的Class從代理工廠Map取出對應的代理工廠 4、

Mybatis介面程式設計

(一)介面式程式設計與非介面式程式設計的區別 1.namespace的命名方式: (1)非介面式程式設計:命名比較隨意 <mapper namespace="Command"> (2)介面式程式設計:必須是Mapper檔案對應介面的全限定

Mybatis系列介面程式設計

引言 在前面的文章《Mybatis系列之簡單示例》曾有一段程式碼涉及到了介面式程式設計,當時並沒有展開闡述,今天我們單獨把這一段拿出來表一表。 在講Mybatis介面式程式設計之前,我們先回憶一下前面是如何呼叫對映檔案中的SQL程式碼的。通常情況下,都是使用SqlSe

mybatis入門介面程式設計

上一節《mybatis入門之Helloworld》我們介紹了mybatis的入門搭建知識,但是上一節的程式設計方式現在不常用了,現在比較常用的是介面式程式設計,專案結構和程式碼請先按照上一節的來完成,

Mybatis——實現介面程式設計

通常情況下,都是使用SqlSession例項的selectXXX(selectOne, selectList, selectMap)方法來執行對映檔案中相應的SQL語句的,這些方法都有一個共同的特徵,那就是第一個引數都是String型別的,我們需要使用這個引數明

資料結構學習筆記——堆疊儲存結構c語言實現

棧的鏈式儲存結構使用單鏈表實現,同線性表一樣,鏈式儲存結構的堆疊在儲存空間的利用上顯得更加靈活,只要硬體允許一般不會出現溢位的情況。但鏈式棧相對於順序棧稍顯麻煩,若所需堆疊空間確定,順序棧顯得方便一些。關於鏈式和順序式的選擇視具體情況而定。 1.棧的鏈式儲存結構

機器學習經典PCA的數學原理很值得讀

PCA(Principal Component Analysis)是一種常用的資料分析方法。PCA通過線性變換將原始資料變換為一組各維度線性無關的表示,可用於提取資料的主要特徵分量,常用於高維資料的降維。網上關於PCA的文章有很多,但是大多數只描述了PCA的分析過

zookeeper詳解概念與原理總結的乾貨

ZK總結: zookeeper(以下就用ZK代替)是一個分散式協調系統,主要有兩大功能,檔案系統和通知系統。 1、zk(分散式高性協調系統): 功能: 配置服務 叢集管理 名字服務 分散式同步 釋出訂閱(註冊中心) 資料庫動態切換 分散式日誌收集 分散式

江疏影讀書系列Java併發程式設計實戰第一章 簡介

欲速則不達,欲達則欲速! 12年畢業,化工、零售。16年轉行,Java培訓五個月,17年1月,我人生中最悲慘的一個月,找工作處處

MyBatis學習——第一個mybatisMyBatis介面程式設計小結

第一個mybatis——helloWorld1、首先建立一張表,表結構、欄位型別如下所示:2、在intellij idea或eclipse中建立一個實體類Employee3、配置mybatis的配置檔案

併發程式設計原理

Synchronized 關鍵字結合物件的監視器,JVM 為我們提供了一種『內建鎖』的語義,這種鎖很簡便,不需要我們關心加鎖和釋放鎖的過程,我們只需要告訴虛擬機器哪些程式碼塊需要加鎖即可,其他的細節會由編譯器和虛擬機器自己實現。 可以將我們的『內建鎖』理解為是 JVM 的一種內建特性, 所以一個很顯著的問題就

MyBatis學習筆記- 介面程式設計

MyBatis 的 HelloWorld 的進階 注意:本次操作是在上一個筆記的基礎之上 工程目錄如下: 1. 建立一個 EmployeeMapper 的介面 public interface EmployeeMapper { public Employee ge

從零開始學 Web jQuery事件冒泡,事件引數物件,鏈程式設計原理

一、事件冒泡與阻止事件冒泡 事件冒泡:當一個元素觸發某個事件的時候,會把這個事件傳播到其父元素,一直到頂層元素。 阻止事件冒泡:在被觸發事件的子元素中新增 return false; 即可。 二、事件的觸發 之前講的繫結事件是事件觸發後的事件處理過程,並且上面的事件觸發是被動的事件觸發,怎麼可以主動觸發事

Mybatis系列介面程式設計

Mybatis系列之介面式程式設計引言在前面的文章《Mybatis系列之簡單示例》曾有一段程式碼涉及到了介面式程式設計,當時並沒有展開闡述,今天我們單獨把這一段拿出來表一表。在講Mybatis介面式程式設計之前,我們先回憶一下前面是如何呼叫對映檔案中的SQL程式碼的。通常情況

mybatis級聯關系一對一一對多

res cit tar country 參考 ace ctype ride turn 1. 一對一關系 1.1 entiry 1.1.1 TPersonInfo.java package com.blueStarWei.entity; pub

springcloud服務網關zuul

framework sta end 作用 3.4 配置文件 ssg 異常信息 set 一、路由熔斷 當我們的後端服務出現異常的時候,我們不希望將異常拋出給最外層,期望服務可以自動進行一降級。Zuul給我們提供了這樣的支持。當某個服務出現異常時,直接返回我們預設的信息。 我們

DjangoORM

關聯 數據訪問層 類屬性 編寫 tin 當我 多對一 mysqld 不同類 一、前言 用於實現面向對象編程語言裏不同類型系統的數據之間的轉換,換言之,就是用面向對象的方式去操作數據庫的創建表以及增刪改查等操作。 到目前為止,當我們的程序涉及到數據庫相關操作時,一般操作流

springboot2.x簡單詳細教程--高階篇幅響應程式設計第十五章

      一、SprinBoot2.x響應式程式設計簡介     簡介:講解什麼是reactive響應式程式設計和使用的好處     1、基礎理解:     

MyBatis3-topic04,05 -介面程式設計

筆記要點 /**介面式程式設計: * 1. 原生: Dao 介面-->Dao介面的實現類 * mybatis: Mapper --> 有一個與之對應的 XXMapper.xml * 2. SqlSession * 代表與資料庫的一次會話,用完必須關閉資源;

JS模組化程式設計AMD模型實現原理Requirejs瀏覽器模型,nodejs伺服器模型

官方引數手冊:https://requirejs.org/docs/api.html     /** * require使用指南! * 第一步:建立一個符合Require CMD模組化的標準目錄結構,去官方檢視! * 第二步:在html檔案中指定主js檔