ORM_mybatis 講解


batis 是一個ORM框架,MyBatis作為持久層框架,其主要思想是將程序中的大量sql語句剝離出來,配置在配置文件中,實現sql的靈活配置。這樣做的好處是將sql與程序代碼分離,可以在不修改程序代碼的情況下,直接在配置文件中修改sql。下面給個簡單的入門例子。

工作流程:

(1)加載配置並初始化
觸發條件:加載配置文件
將SQL的配置信息加載成為一個個MappedStatement對象(包括了傳入參數映射配置、執行的SQL語句、結果映射配置),存儲在內存中。
(2)接收調用請求
觸發條件:調用Mybatis提供的API
傳入參數:為SQL的ID和傳入參數對象
處理過程:將請求傳遞給下層的請求處理層進行處理。
(3)處理操作請求 觸發條件:API接口層傳遞請求過來
傳入參數:為SQL的ID和傳入參數對象
處理過程:
(A)根據SQL的ID查找對應的MappedStatement對象。
(B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。
(C)獲取數據庫連接,根據得到的最終 SQL語句和執行傳入參數到數據庫執行,並得到執行結果。
(D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,並得到最終的處理結果。
(E)釋放連接資源。
(4)返回處理結果將最終的處理結果返回。
我們把Mybatis的功能架構分為三層:
(1)API接口層:提供給外部使用的接口API,開發人員通過這些本地API來操縱數據庫。接口層一接收到調用請求就會調用數據處理層來完成具體的數據處理。
(2)數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次數據庫操作。
(3)基礎支撐層:負責最基礎的功能支撐,包括連接管理、事務管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的數據處理層提供最基礎的支撐。

4,在DAO層添加基於每個dao文件的**DAO.config配置文件,在這個文件里標注類型別名和書寫要操作的sql語句:

ORM_mybatis - hui1107464497 - hui1107464497的博客

其中:parameterClass用來指定入參,resultClass指定出參

5,此時可以再DAO層直接使用了:

using IBatisNet.DataMapper;

SqlMap.QueryForList<TaskEntity>("SSL.Entity.SelectTask", 12);

返回id=12的實體。

4,在DAO層添加基於每個dao文件的**DAO.config配置文件,在這個文件里標注類型別名和書寫要操作的sql語句:

ORM_mybatis - hui1107464497 - hui1107464497的博客

其中:parameterClass用來指定入參,resultClass指定出參

5,此時可以再DAO層直接使用了:

using IBatisNet.DataMapper;

SqlMap.QueryForList<TaskEntity>("SSL.Entity.SelectTask", 12);

返回id=12的實體。

1,引入類庫:IBatisNet.DataMapper.dll、IBatisNet.Common.dll 

2,添加配置文件:Providers.config(連接數據庫配置,包含對各種數據庫的字符串配置)

                              Properties.config(配置登陸的數據庫,用戶、密碼)

                              SqlMap.config(Ibatis核心配置文件,包含上邊兩個文件的指定,同時還定義了其它的DataMapper配置選項,如緩存等,在其<sqlMaps>中添加對每個數據源配置文件的配置)

 

3,在web.config中將上一步的sqlmap.config文件配置為對象添加到spring的上下文容器中,以作為屬性向DAO文件注入。

ORM_mybatis - hui1107464497 - hui1107464497的博客

4,在DAO層添加基於每個dao文件的**DAO.config配置文件,在這個文件里標注類型別名和書寫要操作的sql語句:

ORM_mybatis - hui1107464497 - hui1107464497的博客

其中:parameterClass用來指定入參,resultClass指定出參

5,此時可以再DAO層直接使用了:

using IBatisNet.DataMapper;

SqlMap.QueryForList<TaskEntity>("SSL.Entity.SelectTask", 12);

返回id=12的實體。

實例


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM