Mybatis學習小結(一) 基礎查詢的實現
阿新 • • 發佈:2021-02-02
MyBatis 是一款優秀的持久層框架,它支援自定義 SQL、儲存過程以及高階對映而且因為Mybatis具有簡單易學和靈活性高的特點,所以在開發時是使用Mybatis可以提高開發效率,因為MyBatis 免除了幾乎所有的 JDBC 程式碼以及設定引數和獲取結果集的工作使用時只需要通過簡單的 XML 或註解來配置和對映原始型別、介面和 Java POJO為資料庫中的記錄
使用Mybatis實現基礎的查詢:
因為使用的是Maven的方式匯入依賴使用需要在pom.xml中匯入下面使用Mybatis所需要的依賴檔案
<!--匯入依賴-->
<dependencies >
<!--mysql驅動-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<!--mydatis-->
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.6</version>
</dependency>
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId >junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
匯入依賴後就可以開始編寫Mybatis的核心配置檔案:
<?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 核心配置檔案-->
<configuration>
<!--選擇預設環境-->
<environments default="development ">
<!--環境ID-->
<environment id="development">
<!--事務管理,預設使用jdbc-->
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<!--mysql配置-->
<!--驅動-->
<property name="driver" value="com.mysql.jdbc.Driver"/>
<!--連結url-->
<property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSl=true&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT"/>
<!--使用者名稱-->
<property name="username" value="root"/>
<!--密碼-->
<property name="password" value="3961"/>
</dataSource>
</environment>
</environments>
<!--每一個Mapper.Xml都需要在Mybatis核心配置檔案中註冊-->
<mappers>
<mapper class="com.emt.dao.UserMapper"></mapper>
</mappers>
</configuration>
serverTimezone=GMT為新增的時區,因為如果使用的是MySql8.0以上的版本 ,需要增加一個時區配置,但高版本可以相容低版本的mysql所以一般情況下都會加上時區的配置;然後根據資料庫的表建立一個實體類和編寫相應的Mapper介面(即dao介面)併為Mapper介面新增上查詢方法。
編寫相應的Mapper.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">
<!--namespace 繫結一個對應的dao/mapper介面類-->
<mapper namespace="com.emt.dao.UserMapper">
<!--select查詢語句 -->
<!--id對應dao/mapper介面中對應的方法名稱-->
<!--resultType 返回一個結果 --><!--resultMap 返回一個結果集-->
<select id="findAll" resultType="com.emt.pojo.User">
select * from mybatis.user;
</select>
</mapper>
需要注意namespace繫結的Mapper介面類不能寫錯
在完成以上操作就可以編寫實體類進行測試:
//查詢所有test
@Test
public void findAlltest(){
//獲取SqlSessionFactory物件
InputStream inputStream = Resources.getResourceAsStream( "mybatis-config.xml");
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//獲得sqlSession物件
SqlSession sqlSession = sqlSessionFactory.openSession()
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);//獲取到介面
List<User> userList = userMapper.findAll();//執行介面中的方法
for (User user : userList) {
System.out.println(user);
}
//關閉sqlSession
sqlSession.close();
}
測試時可能會出現的問題點:資源獲取不存在
原因是maven的約定大於配置,可能遇到寫的配置檔案無法被匯出或者生效的問題;這個時候需要在build中配置resources開啟資源過濾,來防止資源匯出失敗的問題
<!--在build中配置resources,來防止我們資源匯出失敗的問題-->
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.properties</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>