1. 程式人生 > >史上最簡單的 MyBatis 教程(一)

史上最簡單的 MyBatis 教程(一)

1 簡介

MyBatis 是支援普通 SQL 查詢,儲存過程和高階對映的優秀持久層框架,其幾乎消除了所有的 JDBC 程式碼和引數的手工設定以及結果集的檢索。MyBatis 使用簡單的 XML 或註解用於配置和原始對映,將介面和 Java 的 POJOs(Plain Old Java Objects,普通的 Java物件)對映成資料庫中的記錄。MyBatis 應用程式大都使用 SqlSessionFactory 例項,SqlSessionFactory 例項可以通過 SqlSessionFactoryBuilder 獲得,而 SqlSessionFactoryBuilder 則可以從一個 XML 配置檔案或者一個預定義的配置類的例項獲得。

2 構建步驟

想要熟練的使用 MyBatis 框架,就必須明確其構建步驟,在此,咱們給出構建 MyBatis 框架的詳細步驟,以供大家參考:

  • 建立一個 Java Web 專案;
  • 匯入 MyBatis 框架的 jar 包;
  • 建立核心配置檔案 sqlMapConfig.xml ;
  • 建立對映檔案 UersMapper.xml;
  • 建立測試類。

其中,MyBatis 框架的 jar 包可以通過“MyBatis 之 各種依賴包 ”進行下載,而且裡面包含了大多數常用的配置檔案,值得大家get。此外,還有一點需要大家注意,那就是 MyBatis 框架用於操作資料,支援 SQL 語句,因此在體驗 MyBatis 框架的時候,需要使用資料庫配合進行測試。在本篇博文中,咱們在資料庫中建立了一個名為“person”的表,並通過 MyBatis 框架對其進行一系列常見的操作(增、刪、改、查等)。

3 體驗 MyBatis 框架

首先,給出專案結構圖:

專案結構圖

第一步:建立 Java Web 專案,匯入 jar 包

mybatis-3.2.2.jar                       核心jar
mysql-connector-java-5.1.10-bin.jar     資料庫訪問
asm-3.3.1.jar                           增強類
cglib-2.2.2.jar                         動態代理
commons-logging-1.1.1.jar               通用日誌
javassist-3.17
.1-GA.jar java助手 log4j-1.2.17.jar 日誌 slf4j-api-1.7.5.jar 日誌 slf4j-log4j12-1.7.5.jar 日誌

第二步:建立核心配置檔案 sqlMapConfig.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="test">
        <environment id="test">
            <transactionManager type="JDBC"></transactionManager>    <!-- 事務管理型別:JDBC、MANAGED -->
            <dataSource type="POOLED">    <!-- 資料來源型別:POOLED、UNPOOLED、JNDI -->
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/test?characterEncoding=utf-8" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>

    <!-- 載入對映檔案 mapper -->
    <mappers>
        <!-- 路徑用 斜線(/) 分割,而不是用 點(.) -->
        <mapper resource="yeepay/payplus/mapper/UserMapper.xml"></mapper>
    </mappers>
</configuration>

第三步:建立對映檔案 UersMapper.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="yeepay.payplus/mapper.UserMapper">   <!-- 名稱空間,名字可以隨意起,只要不衝突即可 -->
    <!-- 物件對映,可以不寫 -->
    <!-- 查詢功能,resultType 設定返回值型別 -->
    <select id="findAll" resultType="yeepay.payplus.Person">  <!-- 書寫 SQL 語句 -->
        SELECT * FROM Person
    </select>
</mapper>

第四步:建立實體類(Person)

package yeepay.payplus;

/**
 * Created by 維C果糖 on 2017/2/1.
 */
public class Person {
    private Integer id;
    private String name;
    private Integer age;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

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

第五步:建立測試類(CeshiMyBatis)

package yeepay.payplus.test;

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 org.junit.Test;
import yeepay.payplus.Person;

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

/**
 * Created by 維C果糖 on 2017/2/1.
 */
public class CeshiMyBatis {
    @Test
    public void ceshi() throws IOException {
        /**
         *  1、獲得 SqlSessionFactory
         *  2、獲得 SqlSession
         *  3、呼叫在 mapper 檔案中配置的 SQL 語句
         */
        String resource = "sqlMapConfig.xml";           // 定位核心配置檔案
        InputStream inputStream = Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);    // 建立 SqlSessionFactory

        SqlSession sqlSession = sqlSessionFactory.openSession();    // 獲取到 SqlSession

        // 呼叫 mapper 中的方法:名稱空間 + id
        List<Person> personList = sqlSession.selectList("yeepay.payplus/mapper.UserMapper.findAll");

        for (Person p : personList){
            System.out.println(p);
        }
    }
}

在完成以上步驟後,咱們可以通過 JUnit 來測試框架是否搭建成功,具體使用 JUnit 進行測試的方法,可以通過閱讀“基於 JUnit 單元測試的原理及示例”來了解更為詳細的內容。

相關推薦

關於海康威視sdk與海康威視web的精細的教程

小夥伴們都在下方留言要開發包 web: https://download.csdn.net/download/qq_35583089/10537585    sdk:    https://download.csdn.net/download/qq_35583089/10

簡單MyBatis 教程

1 簡介 MyBatis 是支援普通 SQL 查詢,儲存過程和高階對映的優秀持久層框架,其幾乎消除了所有的 JDBC 程式碼和引數的手工設定以及結果集的檢索。MyBatis 使用簡單的 XML 或註解用於配置和原始對映,將介面和 Java 的 POJOs(Pl

簡單MySQL教程詳解基礎篇之多表聯合查詢

常用術語 內連線 外連線 左外連線 右外連線 注意事項: 自連線 子查詢 在上篇文章史上最簡單MySQL教程詳解(基礎篇)之資料庫設計正規化及應用舉例我們介紹過,在關係型資料庫中,我們通常為了減少資料的冗餘量將對資料表進行規範,將

簡單MySQL教程詳解進階篇之儲存引擎介紹及預設引擎設定

什麼是儲存引擎? 與其他資料庫例如Oracle 和SQL Server等資料庫中只有一種儲存引擎不同的是,MySQL有一個被稱為“Pluggable Storage Engine Architecture”(可替換儲存引擎架構)的特性,也就意味著My

Intellij idea簡單教程之Linux下安裝與破解Intellij idea2017

成功 zxvf java 新建 pre form 旗艦版 lan intel 一、前言 這一節我們介紹在Linux下如何安裝與破解Intellij idea2017。現在有很多公司開發環境都是Linux,所以掌握在Linux環境下使用Idea辦公也是咱們必須得掌握的技能。

【Android】從無到有:手把手步步教你使用簡單的 Fragment

轉載請註明出處,原文連結:https://blog.csdn.net/u013642500/article/details/80515227 【本文適用讀者】         知道 Fragment 是什麼,不知

hibernate簡單入門教程---------基本配置

應用級別所以很粗淺 首先介紹一下hibernate框架: 1.優秀的持久化(通俗講把記憶體上的短時間執行資訊儲存在持久化硬碟上)框架。 2.作用於持久層,因為沒什麼侵入性,所以同樣適用於其他層面上的儲存 3.高度整合jdbc,簡化了很多jdbc的操作。比如查詢,比如儲存 4.二級快取。快取一部分所查

學習 RTOS -- 認識 RTOS 和簡單的 OS

1、什麼是RTOS?   所謂的 RTOS (Real time operation system)指的就是實時的作業系統。如何理解這一句話呢?那麼就要首先知道什麼是系統,在日常的生活中我們常常會聽到系統這個詞,比如有windows作業系統,Android作業

:springCloud服務發現者,服務消費者方誌朋《簡單的 SpringCloud 教程》專欄讀後感

註冊服務中心 new–>project–>spring Initializr—>(next)…—>Dependencies(Cloud Discovery Eureka Server) 在入口類處加註解@EnableEurekaServ

簡單的 MySQL 教程四十「觸發器」

溫馨提示:本系列博文已經同步到 GitHub,地址為「mysql-tutorial」,歡迎感興趣的童鞋Star、Fork,糾錯。 案例:網上購物,根據生產訂單的型別,商品的庫存量對應的進行增和減。此案例涉及兩張表,分別為訂單表和商品表,下單時,商

查找簡單清晰的紅黑樹解說

ont 演示 detail align article 向上 節點 動態插入 列表 查找(一) 我們使用符號表這個詞來描寫敘述一張抽象的表格。我們會將信息(值)存儲在當中,然後依照指定的鍵來搜索並獲取這些信息。鍵和值的詳細意義取決於不同的應用。 符號表中可能會保

簡單的SpringCloud教程 | 第二篇: 服務消費者rest+ribbon

image tree 開啟 then rom cat learn 替代 官網 最新Finchley版本:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f2-ribbon/或者http://blog.csdn.n

簡單的 SpringCloud 教程 | 第一篇: 服務的註冊與發現Eureka

add 過程 sdn 需要 2.3 boot one ini tail 最新Finchley版本請訪問:https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f1-eureka/或者http://blog.csdn.n

簡單的SpringCloud教程 | 第四篇:斷路器Hystrix

技術分享 熔斷器 enable layer get local nsh 12c host 在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以相互調用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign來調用。為了保證

簡單的SpringCloud教程 | 第十篇: docker部署spring cloud項目

大數 imageview 建議 chapter 環境 多次 pan mas 存儲 Docker是一個開源的引擎,可以輕松的為任何應用創建一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機)、bare m

簡單的SpringCloud教程 | 第四篇:斷路器Hystrix(Finchley版本)

stat api serve 依賴 網頁 固定 lock 不能 mar 在微服務架構中,根據業務來拆分成一個個的服務,服務與服務之間可以相互調用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign來調用。為了保證其高可用,單個服務

簡單的SpringCloud教程 | 第十篇: docker部署spring cloud專案

Docker是一個開源的引擎,可以輕鬆的為任何應用建立一個輕量級的、可移植的、自給自足的容器。開發者在筆記本上編譯測試通過的容器可以批量地在生產環境中部署,包括VMs(虛擬機器)、bare metal、OpenStack 叢集和其他的基礎應用平臺。 Docker通常用於如下場景:

簡單的SpringCloud教程 | 第三篇: 服務消費者Feign

最新Finchley版本請訪問: https://www.fangzhipeng.com/springcloud/2018/08/30/sc-f3-feign/ 或者 http://blog.csdn.net/forezp/article/details/810409

簡單的SpringCloud教程大全Finchley版本

史上最簡單的 SpringCloud 教程 | 第一篇: 服務的註冊與發現Eureka(Finchley版本) https://blog.csdn.net/forezp/article/details/81040925 史上最簡單的SpringCloud教程 | 第二篇: 服務

簡單的SpringCloud教程 | 第二篇: 服務消費者rest+ribbon(Finchley版本)

在上一篇文章,講了服務的註冊和發現。在微服務架構中,業務都會被拆分成一個獨立的服務,服務與服務的通訊是基於http restful的。Spring cloud有兩種服務呼叫方式,一種是ribbon+restTemplate,另一種是feign。在這一篇文章首先講解下基於rib