Mybatis環境配置
阿新 • • 發佈:2020-07-21
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&useUnicode=false&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>
幾個需要注意的地方
- xml檔案中不要出現中文註釋(包括在整個專案中出現過的其它xml檔案)
- useSSL=false
- &等同於普通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)
- 讓我們先寫好一個介面
注:這裡的UserBean是我自己寫的,裡面的每一個屬性都對對應了資料庫user表中的欄位名
public interface UserDAO {
List<UserBean> getUserList();
}
- 通過在改介面的同一個目錄下新建一個.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一樣都是需要主動關閉的
恭喜,到這裡配置已經基本完成了!