日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis使用心得(一)--- 简单介绍

發布時間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis使用心得(一)--- 简单介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

?Mybatis的前身是iBatis,iBatis原本就是apache的一個開源項目,2010年該項目有apache遷移到了google code,并改名為MyBatis。

1. 簡介
????MyBatis支持普通SQL查詢,存儲過程和高級映射的優秀持久層框架,消除了幾乎所有的JDBC代碼和參數的手動設置以及結果集的檢索。MyBatis可以使用XML或者注解用于配置和映射,將接口和JavaBean映射成數據庫的記錄。
????每一個MyBatis的應用程序都以一個SqlSessionFactory對象的實例為核心。SqlSessionFactory對象的實例可以通過SqlSessionFactoryBuilder對象來獲得,SqlSessionFactoryBuilder對象可以從XML配置文件或從Configuration類獲得。例如:

String resource = "com/alvinliang/mybatis/mybatis-config.xml"; InputStream is= Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(is);

????XML配置文件包含了對MyBatis系統的核心設置,有獲取數據庫連接實例的數據源和決定事務范圍和控制事務管理器。詳細內容后面會講,這里給出一個簡單示例:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><environments default="development"><environment id="development"><transactionManager type="JDBC"/><dataSource type="POOLED"><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><mappers><mapper resource="com/alvinliang/mybatis/BlogMapper.xml"/></mappers> </configuration>

還有很多可以配置,上面指出了最關鍵的部分。environment元素體里包含對事務管理和連接池的環境配置。mapppers元素包含了所有mapper映射器,這些mapper的xml文件包含了SQL代碼和映射定義信息。

2. 總體流程
(1) 加載配置并初始化
??觸發條件:加載配置文件,將SQL配置文件加載成一個個MappedStatement對象。
(2) 接受調用請求
??觸發條件:調用MyBatis提供的API
? 傳入參數:為SQL的ID和傳入參數對象
? 處理過程:將請求傳遞給下層的請求的處理層進行處理。
(3) 處理操作請求
? 觸發條件:API接口層傳遞請求過來
? 傳入參數:為SQL的ID和傳入參數對象
? 處理過程:
????(A)根據SQL的ID查找對應的MappedStatement對象。
????(B)根據傳入參數對象解析MappedStatement對象,得到最終要執行的SQL和執行傳入參數。
????(C)獲取數據庫連接,根據得到的最終SQL語句和執行傳入參數到數據庫執行,并得到執行結果。
????(D)根據MappedStatement對象中的結果映射配置對得到的執行結果進行轉換處理,并得到最終的處理結果。
????(E)釋放連接資源。
(4)返回處理結果將最終的處理結果返回。

3. 功能框架
??Mybatis可以分為三層:
(1) API接口層:提供給外部使用的接口API,開發人員可以通過本地API來操縱數據庫。
(2) 數據處理層:負責具體的SQL查找、SQL解析、SQL執行和執行結果映射處理等。
(3) 基礎支持層:負責最基本的功能支撐,包括連接管理、事務管理、配置加載和緩存處理等。

4. 簡單使用
先從SqlSessionFactory對象來獲得SqlSession的實例,SqlSession對象包含了對數據庫的所有執行SQL操作的方法。例如:

SqlSession session = sqlSessionFactory.openSession(); try {Blog blog = (Blog) session.selectOne("com.alvinliang.mybatis.BlogMapper.selectBlog", 1); } finally {session.close(); }

下面給出映射的SQL語句:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.alvinliang.mybatis.BlogMapper"><select id="selectBlog" resultType="Blog">select * from Blog where id = #{id}</select> </mapper>

這里只是給出了一個簡潔的例子,其中在命名空間“com.alvinliang.mybatis.BlogMapper”中定義了一個名為“selectBlog”的映射語句,這樣它允許你使用完全限定名“com.alvinliang.mybatis.BlogMapper.selectBlog”來調用映射語句。
注意:現在命名空間是必須的,而且命名空間使得接口綁定成為可能,使用命名空間并將它放在合適的Java包空間下,將會使你的代碼變得簡潔,會在很長的時間內提高MyBatis的作用。

5. 范圍和生命周期
SqlSessionFactoryBuilder
這個類可以被實例化,使用和丟棄。一旦你創建了SqlSessionFactory后,這個類就不需要了。因此SqlSessionFactoryBuilder實例的最佳范圍就是方法范圍(也就是本地方法變量)。你可以重用SqlSessionFactoryBuilder來創建多個SqlSessionFactory實例。

SqlSessionFactory
一旦被創建,SqlSessionFactory應該在你的應用執行期間都存在,沒有理來處理或者重新創建它。使用SqlSessionFactory的最佳實踐是在應用運行期間不要重復創建多次。因此SqlSessionFactory的生命周期是Application范圍。很多方法可以做到,如單例模式或者靜態單例模式。

SqlSession
每個線程都應該有它自己的SqlSession實例。SqlSession的實例不能被共享,也是線程不安全的。因此最佳范圍應該是request或者method范圍。絕對不能將SqlSession實例的引用放在一個類的靜態字段甚至是實例字段中。也絕對不能將SqlSession實例引用放在任何類型的管理范圍中,比如Servlet中的HttpSession。如果你正在使用Web框架,可以考慮將SqlSession放在一個和Http Request對象相似的范圍內。下面的示例就是一個確保SqlSession關閉的基本模式:

SqlSession session = sqlSessionFactory.openSession(); try {// do work } finally {session.close(); } 在你的代碼中一貫的使用這種模式,將會保證所有的數據庫資源都正常的關閉。

轉載于:https://my.oschina.net/liangbo/blog/224891

總結

以上是生活随笔為你收集整理的MyBatis使用心得(一)--- 简单介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。