1. 程式人生 > 其它 >Mybatis學習小結(一) 基礎查詢的實現

Mybatis學習小結(一) 基礎查詢的實現

技術標籤:學習日記總結日記

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&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;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>