學習mybatis-3 step by step 篇一
一、搭建簡單mybatis-3環境(詳細的中文文檔)
集成開發環境:IDEA
項目:maven + mybatis-3
1、創建maven結構項目
含簡單,如下圖:
下一步後,填寫groupid和artifactid完成就可以了。本次引入的jar如下:
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.1</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> <optional>true</optional> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.6</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.15</version> </dependency> </dependencies>
2、配置mybatis
-
從 XML 中構建 SqlSessionFactory
每個基於 MyBatis 的應用都是以一個 SqlSessionFactory 的實例為中心的。SqlSessionFactory 的實例可以通過 SqlSessionFactoryBuilder 獲得。而 SqlSessionFactoryBuilder 則可以從 XML 配置文件或一個預先定制的 Configuration 的實例構建出 SqlSessionFactory 的實例。
-
mybatis-config.xml配置文件如下
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="config.properties"> <!--<property name="driver" value="dev_user"/>--> <!--<property name="password" value="F2Fa3!33TYyg"/>--> <!--<property name="username" value="dev_user"/>--> <!--<property name="password" value="F2Fa3!33TYyg"/>--> </properties> <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="sqlmapper/UserMapper.xml"/> </mappers> </configuration>
以上配置文件註意幾點,driver、url、username、password引用的是配置文件中的變量,以上配置引用的的是config.properties中的變量。當然也可以在<properties></properties>中填寫,如註釋掉的部分。如果都有的話,會有優先級問題,讀取配置文件中變量的優先級高於<properties>中配置的值。
- 屬性也可以被傳遞到 SqlSessionFactoryBuilder.build()方法中。例如:
Properties properties = new Properties(); properties.load(new FileInputStream("Test.properties")); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream, properties);
如果屬性在不只一個地方進行了配置,那麽 MyBatis 將按照下面的順序來加載:
- 在 properties 元素體內指定的屬性首先被讀取。
- 然後根據 properties 元素中的 resource 屬性讀取類路徑下屬性文件或根據 url 屬性指定的路徑讀取屬性文件,並覆蓋已讀取的同名屬性。
- 最後讀取作為方法參數傳遞的屬性,並覆蓋已讀取的同名屬性。
因此,通過方法參數傳遞的屬性具有最高優先級,resource/url 屬性中指定的配置文件次之,最低優先級的是 properties 屬性中指定的屬性。
3、MyBatis配置之settings標簽
一個配置文件如下
<settings> <setting name="cacheEnabled" value="false"/> <setting name="useGeneratedKeys" value="true"/> <setting name="defaultExecutorType" value="REUSE"/> <setting name="lazyLoadingEnabled" value="false"/> <setting name="defaultStatementTimeout" value="50"/> </settings>
- cacheEnabled
該配置影響的所有映射器中配置的緩存的全局開關。默認值:true
- useGeneratedKeys
允許 JDBC 支持自動生成主鍵,需要驅動兼容。 如果設置為 true 則這個設置強制使用自動生成主鍵,盡管一些驅動不能兼容但仍可正常工作(比如 Derby)。默認值:false
- defaultExecutorType
配置默認的執行器。SIMPLE 就是普通的執行器;REUSE 執行器會重用預處理語句(prepared statements); BATCH 執行器將重用語句並執行批量更新。(SIMPLE REUSE BATCH),默認值:SIMPLE
- lazyLoadingEnabled
延遲加載的全局開關。當開啟時,所有關聯對象都會延遲加載。 特定關聯關系中可通過設置fetchType屬性來覆蓋該項的開關狀態。(true | false),默認值:false
- defaultStatementTimeout
設置超時時間,它決定驅動等待數據庫響應的秒數。
更多的setting設置參考:http://www.mybatis.org/mybatis-3/zh/configuration.html#properties
關於defaultExecutorType理解可參考:https://my.oschina.net/HuQingmiao/blog/516378
需要註意的是</settings>標簽是有順序的,不能隨便放。需放在<properties>後面,一個完整有效的配置如下:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <properties resource="config.properties"> <!--<property name="driver" value="dev_user"/>--> <!--<property name="password" value="F2Fa3!33TYyg"/>--> <!--<property name="username" value="dev_user"/>--> <!--<property name="password" value="F2Fa3!33TYyg"/>--> </properties> <settings> <setting name="cacheEnabled" value="false"/> <setting name="useGeneratedKeys" value="true"/> <setting name="defaultExecutorType" value="REUSE"/> <setting name="lazyLoadingEnabled" value="false"/> <setting name="defaultStatementTimeout" value="50"/> </settings> <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="sqlmapper/UserMapper.xml"/> </mappers> </configuration>
學習mybatis-3 step by step 篇一