亚洲精品久久久久久第一页-人妻少妇精彩视品一区二区三区-91国产自拍免费视频-免费一级a在线播放视频正片-少妇天天日天天射天天爽-国产大屁股喷水视频在线观看-操美女骚穴抽插性爱视频-亚洲 欧美 中文字幕 丝袜-成人免费无码片在线观看

mybatis存儲過程寫法 mybatis調(diào)用存儲過程詳解


mybatis存儲過程寫法 mybatis調(diào)用存儲過程詳解

文章插圖
簡述本文主要介紹MyBatis框架工作原理及流程 。
MyBatis介紹MyBatis是一款優(yōu)秀的持久層框架,它支持自定義SQL、存儲過程以及高級映射 。MyBatis免除了幾乎所有的JDBC代碼以及設置參數(shù)和獲取結果集的工作 。MyBatis可以通過簡單的XML或注解來配置和映射原始類型、接口和JavaPOJO(PlainOldJavaObjects,普通老式Java對象)為數(shù)據(jù)庫中的記錄 。
MyBatis架構圖圖1 MyBatis架構圖
核心類SqlSessionFactoryBuilder:這個類可以被實例化、使用和丟棄,一旦創(chuàng)建了 SqlSessionFactory,就不再需要它了 。因此SqlSessionFactoryBuilder實例的最佳作用域是方法作用域(也就是局部方法變量) 。你可以重用SqlSessionFactoryBuilder來創(chuàng)建多個 SqlSessionFactory實例,但最好還是不要一直保留著它,以保證所有的 XML 解析資源可以被釋放給更重要的事情 。
SqlSessionFactory:SqlSessionFactory一旦被創(chuàng)建就應該在應用的運行期間一直存在,沒有任何理由丟棄它或重新創(chuàng)建另一個實例 。使用SqlSessionFactory的最佳實踐是在應用運行期間不要重復創(chuàng)建多次,多次重建SqlSessionFactory被視為一種代碼”壞習慣” 。因此SqlSessionFactory的最佳作用域是應用作用域 。有很多方法可以做到,最簡單的就是使用單例模式或者靜態(tài)單例模式 。
SqlSession:每個線程都應該有它自己的SqlSession實例 。SqlSession的實例不是線程安全的,因此是不能被共享的,所以它的最佳的作用域是請求或方法作用域 。絕對不能將SqlSession實例的引用放在一個類的靜態(tài)域,甚至一個類的實例變量也不行 。也絕不能將SqlSession實例的引用放在任何類型的托管作用域中,如Servlet框架中的HttpSession 。如果你現(xiàn)在正在使用一種Web框架,考慮將SqlSession放在一個和HTTP請求相似的作用域中 。換句話說,每次收到HTTP請求,就可以打開一個SqlSession,返回一個響應后,就關閉它 。這個關閉操作很重要,為了確保每次都能執(zhí)行關閉操作,你應該把這個關閉操作放到finally塊中 。
Executor:Executor(執(zhí)行器)接口有兩個實現(xiàn)類,其中BaseExecutor有三個繼承類分別是BatchExecutor(重用語句并執(zhí)行批量更新),ReuseExecutor(重用預處理語句prepared statement,跟Simple的唯一區(qū)別就是內(nèi)部緩存statement),SimpleExecutor(默認,每次都會創(chuàng)建新的statement) 。
Mapped Statement:用來存放我們SQL映射文件中的信息包括sql語句,輸入?yún)?shù),輸出參數(shù)等等 。一個SQL節(jié)點對應一個MappedStatement對象 。
工作流程首先解釋下兩個文件
mybatis-config.xml:全局配置文件,引入了數(shù)據(jù)源、事務等mybatis運行環(huán)境;
Mapper.xml:配置映射文件,配置sql結果集封裝類型、傳參類型;
1、 解析配置文件(MyBatis-config.xml、Mapper.xml),MyBatis基于XML配置文件生成Configuration,和一個個MappedStatement(包括了參數(shù)映射配置、動態(tài)SQL語句、結果映射配置),其對應著<select | update | delete | insert>標簽項 。;
2、 SqlSessionFactoryBuilder創(chuàng)建會話工廠SqlSessionFactory 。
3、 SqlSessionFactory創(chuàng)建會話SqlSession;
4、 執(zhí)行器將MappedStatement對象進行解析,sql參數(shù)轉(zhuǎn)化、動態(tài)sql拼接,生成jdbc Statement對象,使用Paramterhandler填充參數(shù),使用statementHandler綁定參數(shù) 。
5、 JDBC執(zhí)行sql,借助MappedStatement中的結果映射關系,使用ResultSetHandler將返回結果轉(zhuǎn)化成HashMap、JavaBean等存儲結構并返回 。
6、 關閉sqlsession會話 。
ok,以上就是MyBatis工作原理及流程詳細講解,看完記得轉(zhuǎn)發(fā)、點贊和收藏 。想了解更多內(nèi)容,請關注本小編,如果有錯誤,歡迎批評指正,感謝支持 。


以上關于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關的問題,請您及時就醫(yī)或請專業(yè)人士給予相關指導!

「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助: