mybatis-config.xmljava
MyBatis 的配置文件包含了會深深影響 MyBatis 行爲的設置和屬性信息。數據庫
配置文檔的頂層結構以下:安全
configuration(配置) properties(屬性) settings(設置) typeAliases(類型別名) typeHandlers(類型處理器) objectFactory(對象工廠) plugins(插件) environments(環境配置) environment(環境變量) transactionManager(事務管理器) dataSource(數據源) databaseIdProvider(數據庫廠商標識) mappers(映射器)
學會配置多套運行環境!mybatis
不過要記住:儘管能夠配置多個環境,但每一個 SqlSessionFactory 實例只能選擇一種環境。併發
Mybatis默認的事務管理器:JDBC,鏈接池:POOLEDapp
能夠經過properties屬性實現對配置文件的引用ide
這些屬性能夠在外部進行配置,並能夠進行動態替換。你既能夠在典型的 Java 屬性文件中配置這些屬性,也能夠在 properties 元素的子元素中設置。【xx.properties】ui
在覈心配置文件中引入properties中的值url
注意:xml文件中標籤的順序是固定的!!插件
<!--引入外部配置文件--> <properties resource="org/mybatis/example/config.properties"> <property name="username" value="dev_user"/> <property name="password" value="F2Fa3!33TYyg"/> </properties> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource>
注意點:
類型別名可爲 Java 類型設置一個縮寫名字。
它僅用於 XML 配置,意在下降冗餘的全限定類名書寫。
<!--給實體類起別名--> <typeAliases> <typeAlias alias="User" type="com.spong.pojo.User"/> </typeAliases>
當這樣配置時,User
能夠用在任何使用 com.spong.pojo.User
的地方
也能夠指定一個包名,MyBatis 會在包名下面搜索須要的 Java Bean
<typeAliases> <package name="com.spong.pojo"/> </typeAliases>
在沒有註解的狀況下,會使用 Bean 的首字母小寫的非限定類名來做爲它的別名,如有註解,則別名爲其註解值。
@Alias("myuser") public class User { ... }
在實體類比較少的時候,使用第一種方式;
實體類較多時,使用第二種;
<!-- 使用相對於類路徑的資源引用 --> <mappers> <mapper resource="org/mybatis/builder/AuthorMapper.xml"/> </mappers>
<!-- 使用映射器接口實現類的徹底限定類名 --> <mappers> <mapper class="org.mybatis.builder.AuthorMapper"/> </mappers>
<!-- 將包內的映射器接口實現所有註冊爲映射器 --> <mappers> <package name="org.mybatis.builder"/> </mappers>
使用class文件綁定和掃描包進行綁定的注意點:
不一樣做用域和生命週期類別是相當重要的,由於錯誤的使用會致使很是嚴重的【併發問題】。
SqlSessionFactoryBuilder:
SqlSessionFactory:
能夠想象爲:數據庫鏈接池
一旦被建立就應該在應用的運行期間一直存在,沒有任何理由丟棄它或從新建立另外一個實例。
最佳做用域是應用做用域。
使用單例模式或者靜態單例模式。
SqlSession: