MyBatis 本是apache的一個(gè)開源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目由apache software foundation 遷移到了google code,并且改名為MyBatis 。2013年11月遷移到Github。
iBATIS一詞來源于“internet”和“abatis”的組合,是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAOs)
MyBatis 是一款優(yōu)秀的持久層框架,它支持定制化 SQL、存儲(chǔ)過程以及高級(jí)映射。MyBatis 避免了幾乎所有的 JDBC 代碼和手動(dòng)設(shè)置參數(shù)以及獲取結(jié)果集。MyBatis 可以使用簡(jiǎn)單的 XML 或注解來配置和映射原生信息,將接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄。
Mybatis配置文件詳解
一、SqlSession的使用范圍說明
1、SQLSessionFactoryBuilder
通過SqlSessionFactoryBuilder創(chuàng)建會(huì)話工廠SqlSessionFactory,將SqlSessionFactoryBuilder當(dāng)成一個(gè)工具類使用即可,不需要使用單例模式管理,在創(chuàng)建SqlSessionFactory的時(shí)候,只需要new一次SqlSessionFactoryBuilder即可。
2、SqlSessionFactory
通過SqlSessionFactory創(chuàng)建SqlSession,使用單例模式來管理SqlSessionFactory(工廠一旦創(chuàng)建,只使用一個(gè)實(shí)例)。
3、SqlSession
SqlSession是一個(gè)面向用戶(程序員)的接口。
SqlSession中提供了很多操作數(shù)據(jù)庫(kù)的方法:如selectOne(返回單個(gè)對(duì)象)、selectList(返回單個(gè)或多個(gè)對(duì)象)。
SqlSession是線程不安全的,因?yàn)樵赟qlSession中除了有接口中的方法(操作數(shù)據(jù)庫(kù)的方法)之外。還有數(shù)據(jù)域?qū)傩浴?/p>
SqlSession的最佳應(yīng)用場(chǎng)合是在方法體內(nèi),將其定義為局部變量來使用。
二、SqlMapConfig.xml配置文件詳解
1、Properties屬性
Properties屬性用來加載屬性配置文件。
《!--
加載屬性文件
resource:屬性文件的相對(duì)路徑
url:屬性文件的絕對(duì)路徑
--》
《properties resource=“config/db.properties”》
《!--
配置一些屬性
name:屬性的名稱
value:屬性的值
--》
《!--《property name=“” value=“” /》 --》
《/properties》
properties特性:
Mybatis將按照下面的屬性來加載屬性:
1. 首先會(huì)讀取在property標(biāo)簽中定義的屬性。
2. 然后會(huì)讀取在properties標(biāo)簽中通過resource或url加載時(shí)的屬性,它會(huì)覆蓋已讀取得同名屬性。
3. 最后會(huì)讀取sql中parameterType傳遞過來的屬性,它會(huì)覆蓋已讀取的同名屬性。
2、settings全局參數(shù)配置
Mybatis框架在運(yùn)行時(shí)可以調(diào)整一些運(yùn)行參數(shù),比如:開啟二級(jí)緩存、開啟延遲加載等。這些參數(shù)
要通過settings標(biāo)簽來配置,全局參數(shù)會(huì)影響Mybatis的運(yùn)行行為,配置一定要注意。
《!--全局參數(shù)配置--》
《settings 》
《!--
name:屬性名稱
value:屬性的值
--》
《setting name=“” value=“”/》
《/settings》
常用的全局配置參數(shù)如下:
3、typeAlia
在映射文件中的parameterType和resultType屬性中要指定輸入、輸出映射類型,如果類型為PO,要指定PO類的全路徑這樣不是特別方便,可以使用typeAlias定義一些別名,來方便開發(fā)。
《!--定義別名--》
《typeAliases》
《!--
type:需要起別名的字符串
alias:對(duì)應(yīng)的別名
--》
《typeAlias type=“” alias=“” /》
《!--
name:包名,會(huì)對(duì)包下面的類進(jìn)行掃描,自動(dòng)批量設(shè)置別名,
設(shè)置的別名為類名,首字母大小寫均可
--》
《package name=“” /》
《/typeAliases》
Mybatis的默認(rèn)別名
Mybatis中通過typeHandlers完成jdbc類型和Java類型的裝換。通常情況下,Mybatis提供的類型處理器滿足日常需要,不需要我們?cè)僮远x。
《typeHandlers》
《typeHandler handler=“” jdbcType=“” javaType=“” /》
《/typeHandlers》
Mybatis默認(rèn)支持的數(shù)據(jù)類型
5、environments 環(huán)境
《!--
環(huán)境配置
在和Spring整合后改配置將廢除
--》
《environments default=“development”》
《environment id=“development”》
《!--使用JDBC的事務(wù)管理,事務(wù)管理交給Mybatis--》
《transactionManager type=“JDBC”》《/transactionManager》
《!--數(shù)據(jù)庫(kù)連接池,有Mybatis管理--》
《dataSource type=“POOLED”》
《property name=“driver” value=“com.mysql.jdbc.Driver” /》
《property name=“url” value=“jdbc:mysql://localhost:3306/mybatis” /》
《property name=“username” value=“root” /》
《property name=“password” value=“root” /》
《/dataSource》
《/environment》
《/environments》
6、mapper 加載映射文件
加載映射文件有三種方式
1、加載單個(gè)映射文件
《!--引入mapper--》
《mappers》
《!--rerource:引入映射文件相對(duì)于classpath的地址--》
《mapper resource=“config/sqlmap/userMapper.xml” /》
《/mappers》
2、通過Mapper接口加載單個(gè)映射文件
前提條件:
(1)。 使用Mapper代理的方式進(jìn)行開發(fā)。
(2)。 Mapper接口文件名要和映射文件名一致
(3).Mapper接口文件和映射文件在同一個(gè)目錄下
《!--引入mapper--》
《mappers》
《mapper class=“com.jack.po.UserMapper” /》
《/mappers》
3、批量記載映射文件
前提條件:
(1)。 使用Mapper代理的方式進(jìn)行開發(fā)。
(2)。 Mapper接口文件名要和映射文件名一致
(3).Mapper接口文件和映射文件在同一個(gè)目錄下
《!--引入mapper--》
《mappers》
《!--name:mapper接口文件所在的包路徑--》
《package name=“” /》
《/mappers》
-
配置
+關(guān)注
關(guān)注
1文章
188瀏覽量
18375 -
mybatis
+關(guān)注
關(guān)注
0文章
60瀏覽量
6709
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論