1. 程式人生 > >學習mybatis-3 step by step 篇一

學習mybatis-3 step by step 篇一

odi png environ factor 數據 不能 val 集成開發環境 start

一、搭建簡單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 篇一