1. 程式人生 > >mybatis工作流程

mybatis工作流程

一、Mybatis介紹

MyBatis是一款一流的支援自定義SQL、儲存過程和高階對映的持久化框架。MyBatis幾乎消除了所有的JDBC程式碼,也基本不需要手工去 設定引數和獲取檢索結果。MyBatis能夠使用簡單的XML格式或者註解進行來配置,能夠對映基本資料元素、Map介面和POJOs(普通java對 象)到資料庫中的記錄。

二、MyBatis工作流程

(1)載入配置並初始化

觸發條件:載入配置檔案

配置來源於兩個地方,一處是配置檔案,一處是Java程式碼的註解,將SQL的配置資訊載入成為一個個MappedStatement物件(包括了傳入引數對映配置、執行的SQL語句、結果對映配置),儲存在記憶體中。

(2)接收呼叫請求

觸發條件:呼叫Mybatis提供的API

傳入引數:為SQL的ID和傳入引數物件

處理過程:將請求傳遞給下層的請求處理層進行處理。

(3)處理操作請求 觸發條件:API介面層傳遞請求過來

傳入引數:為SQL的ID和傳入引數物件

處理過程:

(A)根據SQL的ID查詢對應的MappedStatement物件。

(B)根據傳入引數物件解析MappedStatement物件,得到最終要執行的SQL和執行傳入引數。

(C)獲取資料庫連線,根據得到的最終SQL語句和執行傳入引數到資料庫執行,並得到執行結果。

(D)根據MappedStatement物件中的結果對映配置對得到的執行結果進行轉換處理,並得到最終的處理結果。

(E)釋放連線資源。

(4)返回處理結果將最終的處理結果返回。

orm工具的基本思想

無論是用過的hibernate,mybatis,你都可以法相他們有一個共同點:

從配置檔案(通常是XML配置檔案中)得到 sessionfactory.

由sessionfactory  產生 session

在session 中完成對資料的增刪改查和事務提交等.

在用完之後關閉session 。

在java 物件和 資料庫之間有做mapping 的配置檔案,也通常是xml 檔案。

功能架構

Java框架篇---Mybatis 入門

Mybatis的功能架構分為三層:

API介面層:提供給外部使用的介面API,開發人員通過這些本地API來操縱資料庫。介面層一接收到呼叫請求就會呼叫資料處理層來完成具體的資料處理。

資料處理層:負責具體的SQL查詢、SQL解析、SQL執行和執行結果對映處理等。它主要的目的是根據呼叫的請求完成一次資料庫操作。

基礎支撐層:負責最基礎的功能支撐,包括連線管理、事務管理、配置載入和快取處理,這些都是共用的東西,將他們抽取出來作為最基礎的元件。為上層的資料處理層提供最基礎的支撐。

多需要新增的驅動包:

Java框架篇---Mybatis 入門

下面進行快速入門:

目錄如下:

Java框架篇---Mybatis 入門

實體類User

package com.oumyye.model;

public class User {

    private String id;

    private String name;

    private  int age;

    public String getId() {

        return id;

    }

    public void setId(String id) {

        this.id = id;

    }

    public String getName() {

        return name;

    }

    public void setName(String name) {

        this.name = name;

    }

    public int getAge() {

        return age;

    }

    public void setAge(int age) {

        this.age = age;

    }

    @Override

    public String toString() {

        return "User [id=" + id + ", name=" + name + ", age=" + age + "]";

    }

}

對映檔案UserMapping.xml

<?xml version="1.0" encoding="UTF-8" ?>

<mapper namespace="com.oumyye.mapping.UserMapping">

    <!-- 在select標籤中編寫查詢的SQL語句, 設定select標籤的id屬性為getUser,id屬性值必須是唯一的,不能夠重複

    使用parameterType屬性指明查詢時使用的引數型別,resultType屬性指明查詢返回的結果集型別

    resultType="com.oumyye.model.User"就表示將查詢結果封裝成一個User類的物件返回

    User類就是users表所對應的實體類

    -->

    <!-- 

        根據id查詢得到一個user物件

     -->

    <select id="getUser" parameterType="String" 

        resultType="com.oumyye.model.User">

        select * from user where id=#{id}

    </select>

</mapper>

資原始檔mybatis.xml

<?xml version="1.0" encoding="UTF-8"?>

<configuration>

    <environments default="development">

        <environment id="development">

            <transactionManager type="JDBC" />

            <!-- 配置資料庫連線資訊 -->

            <dataSource type="POOLED">

                <property name="driver" value="com.mysql.jdbc.Driver" />

                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />

                <property name="username" value="root" />

                <property name="password" value="root" />

            </dataSource>

        </environment>

    </environments>

    <mappers>

<mapper resource="com/oumyye/mapping/userMapping.xml"/>

     </mappers>

</configuration>

測試類:

package test;

import java.io.InputStream;

import org.apache.ibatis.session.SqlSession;

import org.apache.ibatis.session.SqlSessionFactory;

import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import org.junit.Test;

import com.oumyye.model.User;

public class Tests {

@Test

public void test(){

  String resource = "mybatis.xml";

        //使用類載入器載入mybatis的配置檔案(它也載入關聯的對映檔案)

        InputStream is = Tests.class.getClassLoader().getResourceAsStream(resource);

        //構建sqlSession的工廠

        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);

SqlSession session = sessionFactory.openSession();

        /**

         * 對映sql的標識字串,

         * com.oumyye.mapping.UserMapping是userMapper.xml檔案中mapper標籤的namespace屬性的值,

         * getUser是select標籤的id屬性值,通過select標籤的id屬性值就可以找到要執行的SQL

         */

        String statement = "com.oumyye.mapping.UserMapping.getUser";//對映sql的標識字串

        //執行查詢返回一個唯一user物件的sql

        User user = session.selectOne(statement, "1123");

        System.out.println(user.toString());

}

}

結果:

相關推薦

mybaits入門2--mybatis工作流程+實踐練習

上節回顧:上節介紹了mybatis歷史,特點以及環境的搭建,本節主要介紹下mybatis的工作流程以及使用它進行一個簡單的練習 一、mybatis的工作流程 在整個過程中,比較關鍵的是兩個配置檔案,兩個物件,下面我儘量用白話文把過程梳理一遍: 1.SqlSessionF

mybatis工作流程

一、Mybatis介紹 MyBatis是一款一流的支援自定義SQL、儲存過程和高階對映的持久化框架。MyBatis幾乎消除了所有的JDBC程式碼,也基本不需要手工去 設定引數和獲取檢索結果。MyBatis能夠使用簡單的XML格式或者註解進行來配置,能夠對映基本資料元素、M

SpringMVC+MyBatis面試題 SpringMVC工作流程MyBatis工作流程

SpringMVC的工作流程 使用者傳送請求至前端控制器DispatcherServlet。 DispatcherServlet收到請求後呼叫HandlerMapping處理器對映器。

MyBatis的幾個重要概念和工作流程

.com 信息 獲得 sql 語句 進行 對象 結點 增刪改 build MyBatis 幾個重要的概念 Mapper 配置: Mapper 配置可以使用基於 XML 的 Mapper 配置文件來實現,也可以使用基於 Java 註解的 MyBatis 註解來實現,甚至可以

Mybatis工作流程

MyBatis工作流程 1:載入配置檔案(mybatis-config.xml 、 *...Mapper.xml)並初始化, 將SQL的配置資訊載入成為一個個MappedStatement物件(包括了傳 入引數對映配置、執行的SQL語句、結果對映配置),儲存在記憶體中。 2:接收呼叫請求(呼叫Mybatis

Java框架Mybatis工作流程及原理

Mybatis簡介:        MyBatis 是一款優秀的持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置

ORM框架--mybatis的基本工作流程

ORM:Object Relation Mapping:物件關係對映,通俗理解就是將一個物件相關屬性和資料庫資料進行關聯(對映),傳統我們對資料庫資料的操作可以通過ORM框架轉移到對物件的操作上來,這無疑有利於提高程式的開發效率和專案的可維護性,本質是對傳

MyBatis工作流程

mybatis功能架構1.讀取配置檔案連資料庫的相關資訊2.有了這些資訊就能建立SqlSessionFactorySqlSessionFactory的生命週期是程式級,程式執行的時候建立起來,程式結束的時候消亡3.SqlSessionFactory建立SqlSession,目

Mybatis第一篇【介紹、快速入門、工作流程

什麼是MyBatis MyBatis 本是apache的一個開源專案iBatis, 2010年這個專案由apache software foundation 遷移到了google code,並且改名為MyBatis。是一個基於Java的持久層框架

MyBatis介紹以及工作流程

一、Mybatis介紹MyBatis是一款一流的支援自定義SQL、儲存過程和高階對映的持久化框架。MyBatis幾乎消除了所有的JDBC程式碼,也基本不需要手工去 設定引數和獲取檢索結果。MyBatis能夠使用簡單的XML格式或者註解進行來配置,能夠對映基本資料元素、Map介

Mybatis工作機制原始碼分析—一次insert請求處理流程

      本文從原始碼分析的角度分析Mybatis一次insert請求處理流程。 insert整體處理流程 時序圖 相關原始碼 /** SqlSessionTemplate.java */ public int insert(String statement, Obj

Mybatis】- 工作流程

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

Struts2工作流程

根據 系列 div images 實例 ima strong http響應 fig Struts2是一個非常優秀的MVC框架,它主要通過StrutsPrepareAndExecuteFilter過濾器將Struts2集成到Web應用中的。 基本工作流程: 1、客戶端提交一個

一個簡單的時間片輪轉多道程序內核操作系統工作流程

gson star 高級 time author family num 個數 count 一.操作系統工作概述 存儲程序計算機工作模型,計算機系統最最基礎性的邏輯結構; 函數調用堆棧,高級語言得以執行的基礎; 中斷。多道程序操作系統的基點。 二.代

Git手冊 - 工作流程

git如果代碼已經通過測試,那麽則可以采取以下步驟或流程完成代碼的合並:1)切換至master分支,記住千萬別直接提交修改至master分支:#git checkout master2)基於master分支新建個臨時分支,並切換至新建的分支#git checkout -b branchName3)將要提交的代

SpringMVC框架之工作流程

spring 映射 servle 生成 del 視圖解析 http 即將 pan 1、SpringMVC的基本工作流程 2、SpringMVC具體工作流程 1、用戶發送請求至前端控制器DispatcherServlet 2、DispatcherServlet收到請

機器學習工作流程第一步:如何用Python做數據準備?

pandas 整數 情況 意思 編程練習 人工智能 簡單的 準備工作 標題 這篇的內容是一系列針對在Python中從零開始運用機器學習能力工作流的輔導第一部分,覆蓋了從小組開始的算法編程和其他相關工具。最終會成為一套手工制成的機器語言工作包。這次的內容會首先從數據準備開始。

RDIFramework.NET ━ .NET快速信息化系統開發框架 ━ 工作流程組件介紹

質量 可定制 soa 發包 三方 種類 control eight 統計 RDIFramework.NET ━ .NET快速信息化系統開發框架 工作流程組件介紹 RDIFramework.net,基於.NET的快速信息化系統開發、整合框架,給用戶和開發者最佳的.Net框架

SSL協議握手工作流程詳解(雙向HTTPS流程)

包含 style strong 雙向認證 包括 返回 情況 身份認證 ssl 參考學習文檔:http://www.cnblogs.com/jifeng/archive/2010/11/30/1891779.html SSL協議的工作流程: 服務器認證階段: 1)客戶端向服務

Mybatis工作原理?

模板 操作 配置 們的 對象 實現 做了 判斷 映射 簡單來說,他跟你直接用一個sqlUtil的實現是一樣,只不過很多復雜的util優化的事情,提前有其他程序員做了。Mybatis是一個映射封裝,他與你用util的區別就是,他將在代碼塊中的sql存在統一的xml文件也就是s