Mybatis 環境搭建並簡單測試

Mybatis 環境搭建

很多新人在一開始學習mybatis 的時候雖然看懂開發者文檔不是什麼難事,但是在搭建環境的時候就總會出現一些莫名其妙的錯誤信息,比如說我自己。所以我現在整理了一下步驟,做一個記錄,也提供給一些初學者做一個參考,我使用的是IDEA開發工具。

1. 新建Maven項目

然後:

然後點擊 finish 就好了:

新建的項目工程結構如圖;

2. 配置文件

  1. 項目已經創建成功,既然是 Mybatis 項目,那麼久需要引入Mybatis的依賴:

    maven下載地址

    下載Mybatis 的依賴,並引入;

    <dependencies>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>
    </dependencies>

​ 效果如下:

​ Mybatis 是持久層,所以需要mysql的驅動 依賴

    <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.15</version>
    </dependency>
  1. 依賴引入之後,接下來就是要進行配置了:

    這裏參考Mybatis 官方文檔的 配置文件格式:

    mybatis 官方文檔

    在 resource 目錄下新建一個 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>
  <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="org/mybatis/example/BlogMapper.xml"/>-->
      
  </mappers>
</configuration>

  1. 修改 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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/>
                <property name="url"
                          value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=UFT-8"/>
                <property name="username" value="xxxx"/>
                <property name="password" value="xxxxxx"/>
                <!-- 這裏記得改成自己數據庫對應的參數-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--        <mapper resource="org/mybatis/example/BlogMapper.xml"/>-->

    </mappers>
</configuration>

3. 建立table 映射的實體

即創建一個實體類:

這個實體類的字段都是跟數據庫中表的字段保持一致的:

package cn.kingshion.entity;

public class Users {
    int id;
    String name;
    String password;

    public Users() {
    }

    public Users(int id, String name, String password) {
        this.id = id;
        this.name = name;
        this.password = password;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override
    public String toString() {
        return "Users{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", password='" + password + '\'' +
                '}';
    }
}


4. 建立接口,設計可操作的方法

在這裏先創建一個接口類,然後定義一個數據庫查詢的方法:(當然接口裏面的都是抽象方法,在mybatis 中的一個好處就是我們不要額外的去寫一個實現類去實現這個接口,並且寫很多冗餘的CRUD 語句,可以這麼理解 Mybatis 中所有的操作都是基於接口和映射文件進行配置的)
    
package cn.kingshion.dao;

import java.util.List;

public interface UsersDao {

    public<Users> List getUsers();
}

5. 創建Mapper映射文件:

  1. 在 resource 文件夾下 新建映射文件 UsersMapper.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">
<mapper namespace="cn.kingshion.dao.UsersDao">
    <select id="getUsers" resultType="cn.kingshion.entity.Users">
    select * from users
  </select>
</mapper>

注意:

前面的 namespace 中寫的是接口的路徑;
select 中 id 是 接口中的方法;
resultType 是 實體類的返回類型;
select * from users 是數據庫查詢語句;

6. 在 Mybatis 配置文件 mybatis-config.xml 中 添加 Mapper 的配置

  1. 將之前寫的 UsersMapper.xml 文件添加到 mybatis-config.xml 文件的 mappers 中: ·

7. 完成並測試

​ 這個時候已經配置完成了,接下來就是測試自己的Mybatis到底有沒有配置成功了:

​ 直接在 Maven的 test 文件夾下新建測試類:​

package cn.kingshion;

import cn.kingshion.dao.UsersDao;
import cn.kingshion.entity.Users;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

public class MybatisTest {
    public static void main(String[] args) {
//        String resource = "org/mybatis/example/mybatis-config.xml";
        //  找到 mybatis-config.xml 文件路徑,默認的根路徑:resource文件夾
        String resource = "mybatis-config.xml";
        InputStream inputStream = null;
        try {
            // 創建一個流來讀取配置文件
            inputStream = Resources.getResourceAsStream(resource);

//        使用下面兩句 語句跟第三句的效果是一樣的。
//        SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder();
//        SqlSessionFactory factory = builder.build(inputStream);
            // 通過inputStream 加載配置文件,然後創建 SqlSessionFactoryBuilder
            // 再通過 SqlSessionFactoryBuilder  創建一個 工廠 SqlSessionFactory
            SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

            // 用工廠建立 session 對象
            SqlSession session = sqlSessionFactory.openSession();

            // 使用 映射進行數據庫操作
            UsersDao usersMapper = session.getMapper(UsersDao.class);
            List<Users> list = usersMapper.getUsers();

            for (Users user : list) {
                System.out.println(user);
            }
            // 記得關閉會話 和io流
            session.close();

            inputStream.close();

        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

8. 使用註解方式

  1. 修改 mybatis-config.xml 配置文件的mapper 映射

        <mappers>
            <!--
                使用非註解方式
                指向映射文件
            -->
            <!--        <mapper resource="cn/kingshion/dao/UsersMapper.xml"/>-->
    
            <!--
                使用註解方式
                指向接口
            -->
            <mapper class="cn.kingshion.dao.UsersDao"/>
    
        </mappers>
    
    
  2. 在接口裏面使用註解的方式:

    package cn.kingshion.dao;
    
    import cn.kingshion.entity.Users;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    public interface UsersDao {
    
        @Select("select * from users where id =1")
        public List<Users> getUsers();
    }
    
    
  3. 最後測試

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章