MyBatis運用心得(1)
最近的小專案使用MyBatis作為持久層工具。就此參照官方文件,深入淺出地記錄下來
1.重要的幾個類
1)SqlSession:執行資料庫操作的具體類,應該是持有Connection連線,在MyBaits官方文件上說SqlSession是非執行緒安全的,需要為每一個執行緒建立一個新的SqlSession例項,它的作用域應該是基於Request或者方法級別的,不要將其設成靜態的。SqlSession由SqlSessionFacatory工廠類來產生:
2)SqlSessionFactory:產生SqlSession的工廠類,它的作用域應該是application級別的,也就是唯一的,文件上建議使用靜態域或者Singleton模式,也可以使用Guice或者Spring容器來管理它(Guice和Mybatis的結合以後會提及)。SqlSessionFactory由SqlSessionFactoryBuilder產生:
3)SqlSessionFactoryBuilder:顧名思義,用於產生SqlSessionFactory,文件上建議只要SqlSessionFactory已經建立,SqlSessionFactoryBuilder就沒有用了,除非還想建立多個SqlSessionFactory,所以基於方法作用域比較合適。建立SqlSessionFactory需要資料庫環境和配置,可以基於配置檔案讀取或者Configuration例項:
4)Environment:資料庫連線環境,記錄了JDBC連線,以及所用的DataSource、事務工廠。Environment可以有"development"和"product"2種級別,在一個系統裡應該是可以配置多個Environment,但還沒有嘗試過。其可以由程式碼建立,也可以基於配置檔案
5)Configuration:MyBatis的重要類,記錄了MyBatis的眾多配置,包括Environment、TypeAliases、Mappers、TypeHandlers、ObjectFactory、Plugins。這些配置項中Environment是必須的,其他的都是可選的。可以由配置檔案或者程式碼來建立
6)Mappers:Mappers是自定義的一些介面,通過annotation的方式定義Sql語句,在configuration中將這些Mappers加進來。在SqlSession中可以像xml中定義一樣執行。這應該是Mybatis模仿其他ORM的產品,Mapper也建議使用方法作用域。
1.重要的幾個類
1)SqlSession:執行資料庫操作的具體類,應該是持有Connection連線,在MyBaits官方文件上說SqlSession是非執行緒安全的,需要為每一個執行緒建立一個新的SqlSession例項,它的作用域應該是基於Request或者方法級別的,不要將其設成靜態的。SqlSession由SqlSessionFacatory工廠類來產生:
SqlSession session = sqlSessionFactory.openSession();
每次open出來的SqlSession必須執行close方法,以釋放佔用的資料庫資源。2)SqlSessionFactory:產生SqlSession的工廠類,它的作用域應該是application級別的,也就是唯一的,文件上建議使用靜態域或者Singleton模式,也可以使用Guice或者Spring容器來管理它(Guice和Mybatis的結合以後會提及)。SqlSessionFactory由SqlSessionFactoryBuilder產生:
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(configuration);
3)SqlSessionFactoryBuilder:顧名思義,用於產生SqlSessionFactory,文件上建議只要SqlSessionFactory已經建立,SqlSessionFactoryBuilder就沒有用了,除非還想建立多個SqlSessionFactory,所以基於方法作用域比較合適。建立SqlSessionFactory需要資料庫環境和配置,可以基於配置檔案讀取或者Configuration例項:
String resource = "configuration.xml";
Reader reader = Resources.getResourceAsReader(resource);
sqlMapper = new SqlSessionFactoryBuilder().build(reader);
SqlSessionFactory sqlSessionFactory =
new SqlSessionFactoryBuilder().build(configuration);
4)Environment:資料庫連線環境,記錄了JDBC連線,以及所用的DataSource、事務工廠。Environment可以有"development"和"product"2種級別,在一個系統裡應該是可以配置多個Environment,但還沒有嘗試過。其可以由程式碼建立,也可以基於配置檔案
Environment environment =
new Environment("development", transactionFactory, dataSource);
<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>
5)Configuration:MyBatis的重要類,記錄了MyBatis的眾多配置,包括Environment、TypeAliases、Mappers、TypeHandlers、ObjectFactory、Plugins。這些配置項中Environment是必須的,其他的都是可選的。可以由配置檔案或者程式碼來建立
Configuration configuration = new Configuration(environment);
<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>
</configuration>
6)Mappers:Mappers是自定義的一些介面,通過annotation的方式定義Sql語句,在configuration中將這些Mappers加進來。在SqlSession中可以像xml中定義一樣執行。這應該是Mybatis模仿其他ORM的產品,Mapper也建議使用方法作用域。
相關文章
- mybatis-plus 使用心得MyBatis
- Mybatis中運用小技巧(三)儲存過程的運用MyBatis儲存過程
- mybatis-spring官網學習心得MyBatisSpring
- MyBatis1:MyBatis入門MyBatis
- IDC機房運維心得運維
- Vue學習心得(1)Vue
- 【java】CountDownLatch運用場景(1)JavaCountDownLatch
- MyBatis基礎:MyBatis入門(1)MyBatis
- idea使用技巧、心得1Idea
- 學習心得總結(1)
- Mybatis技術內幕(1):Mybatis簡介MyBatis
- 「Mybatis系列」Mybatis高階應用MyBatis
- mybatis plus 啟用 mybatis外掛MyBatis
- rxJava&rxAndroid-實際運用(1)RxJavaAndroid
- 1 Mybatis動態SQLMyBatisSQL
- SSH原理與運用(1):遠端登入
- Mybatis學習筆記 1:一個Mybatis使用例子MyBatis筆記
- codeforces心得1---747div2
- jQuery心得2--jQuery案例剖析1jQuery
- Mybatis where 1=1 動態sql問題MyBatisSQL
- jQuery心得1--jQuery入門知識串講1jQuery
- Linux企業運維高效技巧心得及分享Linux運維
- 心得分享 | 軟體研發效能(1)
- 我的破解心得(1) (3千字)
- 我的破解心得(12) (1千字)
- MyBatis-Plus 常用API-1MyBatisAPI
- Mybatis N+1問題解析MyBatis
- mybatis系列第1篇:框架原理MyBatis框架
- 四則運算改進版+心得體會+總結
- 運維注意事項及案例講解(個人心得)運維
- Spring6 對 整合MyBatis 開發運用(附有詳細的操作步驟)SpringMyBatis
- rabbitmq 實踐與學習心得分享(1)MQ
- UI元件庫從0到1開發心得UI元件
- GSM學習心得1----GSM的結構
- “淺談” Flutter 應用落地心得Flutter
- myBatis原始碼解析-日誌篇(1)MyBatis原始碼
- MyBatis學習筆記(1)—使用篇MyBatis筆記
- MyBatis 應用的組成MyBatis