1. 程式人生 > 實用技巧 >Mybatis環境配置

Mybatis環境配置

Mybatis環境配置

官方文件地址:https://mybatis.org/mybatis-3/zh/getting-started.html

一.新增依賴

<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
</dependency>

二.構建SqlSessionFactory

首先,我們通過xml檔案構建SqlSessionFactory,檢視文件:

String resource = "org/mybatis/example/mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

這裡,我們建立一個名為mybatis-config.xml的檔案並且放在resources目錄下,並依照官方文件進行配置

<?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>
    <!--this is a develop enviroment-->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/table?useSSL=true&amp;useUnicode=false&amp;characterEncoding=UTF-8"/>
                <property name="username" value="username"/>
                <property name="password" value="password"/>

            </dataSource>
        </environment>
    </environments>
    <!--every mappper should register here -->
    <mappers>
        <mapper resource="com/guan/dao/UserMapper.xml"/>
    </mappers>
</configuration>

幾個需要注意的地方

  1. xml檔案中不要出現中文註釋(包括在整個專案中出現過的其它xml檔案)
  2. useSSL=false
  3. &等同於普通yaml配置檔案中&

三.寫好配置檔案後,我們可以寫一個用於連線的工具類來獲得sqlSession物件了

注:

這裡使用了一個靜態程式碼塊,Java靜態程式碼塊的作用:Java靜態程式碼塊中的程式碼會在類載入JVM時執行,且只被執行一次,也就是說這些程式碼不需要例項化類就能夠被呼叫。一般情況下,如果有些程式碼必須在專案啟動的時候就執行的時候,就需要使用靜態程式碼塊。

static{
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static SqlSession getSqlSession(){
        return sqlSessionFactory.openSession();  //注意這裡返回的sqlSession才是真正的操作物件
    }

四.編寫資料庫的基本操作(DAO/mapper)

  1. 讓我們先寫好一個介面

注:這裡的UserBean是我自己寫的,裡面的每一個屬性都對對應了資料庫user表中的欄位名

public interface UserDAO {
    List<UserBean> getUserList();
}
  1. 通過在改介面的同一個目錄下新建一個.xml檔案來實現定義這個介面(從作用上來說可以認為是對這一介面的實現)
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--bind to a interface-->
<mapper namespace="com.guan.dao.UserDAO" >
<!--    here should the select should bind to a function-->
  <select id="getUserList" resultType="com.guan.bean.UserBean">
    select * from user
  </select>
</mapper>

解釋一下這裡的幾個重要屬性:
(1). namespace:空間命名,也就是介面的具體位置
(2). id是繫結的介面
(3). resultType是返回型別,這裡要寫全地址

3.在mybatis-config.xml中對mapper進行註冊

<mappers>
     <mapper resource="com/guan/dao/UserMapper.xml"/>
</mappers>

五.測試...前的最後一個問題

如果你在此時進行測試,通常會出現以下報錯:

Exception in thread "main" java.lang.ExceptionInInitializerError

開啟打包後的dist檔案下的DAO層,你會發現裡面只有userDAO介面而沒有相應的.xml配置檔案,這是因為maven的資源過濾問題.
為此,我們還需要對pom.xml進行配置

<!-- resources filltering -->
    <build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

最後,提醒一個SqlSession和Connection一樣都是需要主動關閉的
恭喜,到這裡配置已經基本完成了!