Mybatis基礎知識學習(一)

本文主要簡單的介紹了mybatis以及簡單使用,很淺顯,相關內容並不深入,也並未深究其原理,着重點在於如何使用,有些地方可能還有一些小問題,請多多包涵,謝謝~

一、Mybatis簡介

MyBatis 本是apache的一個開源項目iBatis, 2010年這個項目由apache software foundation 遷移到了google code,並且改名爲MyBatis 。2013年11月遷移到Github。
iBATIS一詞來源於“internet”和“abatis”的組合,是一個基於Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAOs)
Mybatis

Mybatis是一個持久層框架,支持定製化SQL、存儲過程以及高級映射。藉助Mybatis可以簡化開發過程中有關持久層的工作量,進而提高編碼效率。
通俗地說,藉助Mybatis可以簡化有關數據庫操作的代碼,Mybatis本質上就是實現一些功能代碼的集合,在使用它時所減輕的工作量實際是由Mybatis自動完成的。

二、使用Mybatis的準備工作

(1)新建項目

使用IDEA新建一個maven項目。(可以簡單地把maven理解爲是一個包的管理工具,實際上其功能遠不止這個,有關maven的使用,這裏不進行介紹,可參考網上大佬的博客)
項目建立後,會自動生成pom.xml文件,這是maven的配置文件,並且有關Mybatis的配置也是在這裏面完成的。初始如下所示
在這裏插入圖片描述
在pom.xml文件裏面添加依賴(dependency)
導入mybatis jar包,可參考官方的教程Mybatis Getting started
在這裏插入圖片描述
由於要對數據庫進行操作,則導入mysql-connector-java
另外根據需要導入一些與日誌或者單元測試等等有關的文件(這些並不是必須的,而mybatis和mysql-connector-java是必須的)
具體導入代碼如下所示,另外注意自行選擇版本,一般推薦選擇最新的。

       <dependencies>
       <!--mybatis-->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.5.3</version>
       </dependency>

       <!--mysql-->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.47</version>
       </dependency>

       
   </dependencies>
 

注意添加好依賴後要進行導入,具體如下
在這裏插入圖片描述

(2)建立數據庫

建立一個test數據庫,裏面有一張用戶表user,user表裏面有id和username兩個字段。

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL,
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'xiaoming');
INSERT INTO `user` VALUES (2, 'xiaohong');

SET FOREIGN_KEY_CHECKS = 1;

在這裏插入圖片描述

三、Mybatis的簡單使用

在上面準備工作的基礎上,開始進行代碼的編寫。

(1)建立數據庫表對應的實體類

數據庫裏面存在user表,因此建立一個user類,

package com.example.domain;

import java.io.Serializable;

/**
 * @className: User
 * @description: 用戶類
 */
public class User implements Serializable {
    //用戶id
    private Integer id;
    //用戶名
    private String username;

    public Integer getId() {
        return id;
    }

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

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                '}';
    }
}

(2)創建user實體對象對應的數據訪問對象(DAO)接口IUser

在這裏我們還寫一個根據用戶id查詢用戶的方法。

package com.example.dao;

import com.example.domain.User;


/**
 * @className: IUserDao
 * @description: 用戶持久層接口
 */
public interface IUserDao {

    /**
     * 通過用戶名查詢用戶
     * @return
     */
    User findByUsername(String username);
}

(3)配置IUserDao對應的映射關係

在mybatis中使用==映射(mapper)==處理數據庫,通俗來說就是在mapper裏面寫sql語句並執行.
創建IUserDao.xml文件(注意在mybatis裏面,一般是寫mapper,即應是UserMapper.xml,這兩者是一樣的,只是前面創建的是DAO類而與之對應罷了)

<?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 namespace="com.example.dao.IUserDao">

    <!--根據用戶名查詢用戶-->
    <select id="findByUsername" resultType="com.example.domain.User">
        select * from user where username=#{username}
    </select>
</mapper>

(4)配置mybatis

新建一個配置文件config.xml(名字隨意),主要是配置有關數據庫的內容,注意本機上mysql的賬號和數據庫。

<?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="mysql">
        <!--配置mysql環境-->
        <environment id="mysql">
            <!--配置事務類型-->
            <transactionManager type="JDBC"/>
            <!--配置數據源(連接池)-->
            <dataSource type="POOLED">
                <!--配置連接數據庫的基本信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/test"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>

    <!--配置映射文件  注意位置-->
    <mappers>
        <mapper class="com.example.dao.IUserDao"/>
    </mappers>

</configuration>

(5)創建測試用例

在test目錄下創建一個測試類MybatisTest,用來測試該mybatis案例是否可以成功運行。

package com.example;

import com.example.dao.IUserDao;
import com.example.domain.User;
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;

/**
 * @className: MybatisTest
 * @description:
 */
public class MybatisTest {

    public static void main(String[] args) throws IOException {
        //讀取配置文件
        InputStream inputStream= Resources.getResourceAsStream("config.xml");

        //創建SqlSessionFactory工廠
        SqlSessionFactoryBuilder sqlSessionFactoryBuilder=new SqlSessionFactoryBuilder();
        SqlSessionFactory sqlSessionFactory=sqlSessionFactoryBuilder.build(inputStream);

        //創建sqlSession對象
        SqlSession sqlSession=sqlSessionFactory.openSession();

        //使用sqlSession創建dao接口的代理對象
        IUserDao userDao=sqlSession.getMapper(IUserDao.class);

        //使用代理對象執行方法 由於只是測試,所以就自己確定一個用戶名進行查詢
        User user=userDao.findByUsername("xiaoming");

        //輸出測試
        System.out.println(user);

        //釋放資源
        sqlSession.close();
        inputStream.close();

    }
}

運行該測試用例,結果如下:
在這裏插入圖片描述
與預期一致。
另外整個項目的主要目錄結構如下所示(以供參考):
在這裏插入圖片描述

四、總結

使用Mybatis可以很方便處理有關數據庫的操作,然後就是需要注意配置mybatis以及mapper的路徑,一定要一一對應。
一般情況下,不會單獨使用Mybatis,而是在spring裏面使用,這樣開發會更便捷一些。不過單獨學習一下mybatis也是很有必要的,可以爲以後學習spring打下基礎。

在這裏插入圖片描述
2020.03.05

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