日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
JavaMybatis框架入門(mén)教程

一、Mybatis介紹

網(wǎng)站建設(shè)哪家好,找成都創(chuàng)新互聯(lián)公司!專(zhuān)注于網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、小程序定制開(kāi)發(fā)、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶(hù)創(chuàng)新互聯(lián)還提供了山丹免費(fèi)建站歡迎大家使用!

MyBatis是一款***的支持自定義SQL、存儲(chǔ)過(guò)程和高級(jí)映射的持久化框架。MyBatis幾乎消除了所有的JDBC代碼,也基本不需要手工去 設(shè)置參數(shù)和獲取檢索結(jié)果。MyBatis能夠使用簡(jiǎn)單的XML格式或者注解進(jìn)行來(lái)配置,能夠映射基本數(shù)據(jù)元素、Map接口和POJOs(普通java對(duì) 象)到數(shù)據(jù)庫(kù)中的記錄。

二、MyBatis工作流程

(1)加載配置并初始化

觸發(fā)條件:加載配置文件

配置來(lái)源于兩個(gè)地方,一處是配置文件,一處是Java代碼的注解,將SQL的配置信息加載成為一個(gè)個(gè)MappedStatement對(duì)象(包括了傳入?yún)?shù)映射配置、執(zhí)行的SQL語(yǔ)句、結(jié)果映射配置),存儲(chǔ)在內(nèi)存中。

(2)接收調(diào)用請(qǐng)求

觸發(fā)條件:調(diào)用Mybatis提供的API

傳入?yún)?shù):為SQL的ID和傳入?yún)?shù)對(duì)象

處理過(guò)程:將請(qǐng)求傳遞給下層的請(qǐng)求處理層進(jìn)行處理。

(3)處理操作請(qǐng)求 觸發(fā)條件:API接口層傳遞請(qǐng)求過(guò)來(lái)

傳入?yún)?shù):為SQL的ID和傳入?yún)?shù)對(duì)象

處理過(guò)程:

(A)根據(jù)SQL的ID查找對(duì)應(yīng)的MappedStatement對(duì)象。
(B)根據(jù)傳入?yún)?shù)對(duì)象解析MappedStatement對(duì)象,得到最終要執(zhí)行的SQL和執(zhí)行傳入?yún)?shù)。
(C)獲取數(shù)據(jù)庫(kù)連接,根據(jù)得到的最終SQL語(yǔ)句和執(zhí)行傳入?yún)?shù)到數(shù)據(jù)庫(kù)執(zhí)行,并得到執(zhí)行結(jié)果。
(D)根據(jù)MappedStatement對(duì)象中的結(jié)果映射配置對(duì)得到的執(zhí)行結(jié)果進(jìn)行轉(zhuǎn)換處理,并得到最終的處理結(jié)果。
(E)釋放連接資源。

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

orm工具的基本思想

無(wú)論是用過(guò)的hibernate,mybatis,你都可以法相他們有一個(gè)共同點(diǎn):

  •  從配置文件(通常是XML配置文件中)得到 sessionfactory.

  •  由sessionfactory  產(chǎn)生 session

  •  在session 中完成對(duì)數(shù)據(jù)的增刪改查和事務(wù)提交等.

  •  在用完之后關(guān)閉session 。

  •  在java 對(duì)象和 數(shù)據(jù)庫(kù)之間有做mapping 的配置文件,也通常是xml 文件。

功能架構(gòu)

Mybatis的功能架構(gòu)分為三層:

  1. API接口層:提供給外部使用的接口A(yíng)PI,開(kāi)發(fā)人員通過(guò)這些本地API來(lái)操縱數(shù)據(jù)庫(kù)。接口層一接收到調(diào)用請(qǐng)求就會(huì)調(diào)用數(shù)據(jù)處理層來(lái)完成具體的數(shù)據(jù)處理。

  2. 數(shù)據(jù)處理層:負(fù)責(zé)具體的SQL查找、SQL解析、SQL執(zhí)行和執(zhí)行結(jié)果映射處理等。它主要的目的是根據(jù)調(diào)用的請(qǐng)求完成一次數(shù)據(jù)庫(kù)操作。

  3. 基礎(chǔ)支撐層:負(fù)責(zé)最基礎(chǔ)的功能支撐,包括連接管理、事務(wù)管理、配置加載和緩存處理,這些都是共用的東西,將他們抽取出來(lái)作為最基礎(chǔ)的組件。為上層的數(shù)據(jù)處理層提供最基礎(chǔ)的支撐。

多需要添加的驅(qū)動(dòng)包:

下面進(jìn)行快速入門(mén):

目錄如下:

實(shí)體類(lèi)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



   
   
   

資源文件mybatis.xml




   
       
           
           
           
               
               
               
               
           

       

   

   

       
    

測(cè)試類(lèi):

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";
        //使用類(lèi)加載器加載mybatis的配置文件(它也加載關(guān)聯(lián)的映射文件)
        InputStream is = Tests.class.getClassLoader().getResourceAsStream(resource);
        //構(gòu)建sqlSession的工廠(chǎng)
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);

        SqlSession session = sessionFactory.openSession();
        /**
         * 映射sql的標(biāo)識(shí)字符串,
         * com.oumyye.mapping.UserMapping是userMapper.xml文件中mapper標(biāo)簽的namespace屬性的值,
         * getUser是select標(biāo)簽的id屬性值,通過(guò)select標(biāo)簽的id屬性值就可以找到要執(zhí)行的SQL
         */
        String statement = "com.oumyye.mapping.UserMapping.getUser";//映射sql的標(biāo)識(shí)字符串
        //執(zhí)行查詢(xún)返回一個(gè)唯一user對(duì)象的sql
        User user = session.selectOne(statement, "1123");
        System.out.println(user.toString());
}
}

結(jié)果:


分享標(biāo)題:JavaMybatis框架入門(mén)教程
文章URL:http://www.5511xx.com/article/cddhijh.html