自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Java Mybatis 框架入門教程

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

一、Mybatis介紹

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

二、MyBatis工作流程

(1)加載配置并初始化

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

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

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

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

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

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

(3)處理操作請求 觸發(fā)條件:API接口層傳遞請求過來

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

處理過程:

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

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

orm工具的基本思想

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

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

  •  由sessionfactory  產(chǎn)生 session

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

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

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

功能架構(gòu)

Java框架篇---Mybatis 入門

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

  1. API接口層:提供給外部使用的接口API,開發(fā)人員通過這些本地API來操縱數(shù)據(jù)庫。接口層一接收到調(diào)用請求就會調(diào)用數(shù)據(jù)處理層來完成具體的數(shù)據(jù)處理。

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

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

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

Java框架篇---Mybatis 入門

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

目錄如下:

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" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.oumyye.mapping.UserMapping">
    <!-- 在select標(biāo)簽中編寫查詢的SQL語句, 設(shè)置select標(biāo)簽的id屬性為getUser,id屬性值必須是唯一的,不能夠重復(fù)
    使用parameterType屬性指明查詢時使用的參數(shù)類型,resultType屬性指明查詢返回的結(jié)果集類型
    resultType="com.oumyye.model.User"就表示將查詢結(jié)果封裝成一個User類的對象返回
    User類就是users表所對應(yīng)的實體類
    -->
    <!--
        根據(jù)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"?>
<!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" />
            <!-- 配置數(shù)據(jù)庫連接信息 -->
            <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的配置文件(它也加載關(guān)聯(lián)的映射文件)
        InputStream is = Tests.class.getClassLoader().getResourceAsStream(resource);
        //構(gòu)建sqlSession的工廠
        SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);

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

結(jié)果:

Java框架篇---Mybatis 入門

責(zé)任編輯:王雪燕 來源: 偶my耶的博客
相關(guān)推薦

2012-07-17 09:13:14

Scrapy

2009-07-08 15:12:48

Java Servle

2009-06-18 09:29:44

Spring Web

2012-05-25 15:35:43

JMSJava

2010-08-03 13:06:15

Flex Builde

2013-08-29 14:12:52

Storm分布式實時計算

2014-05-26 15:35:55

Web組件Web Compone

2020-02-21 08:18:58

JavaScala編程語言

2017-09-16 17:45:32

數(shù)據(jù)采集Scrapy爬蟲

2016-03-18 11:19:57

ios9replaykit入門

2010-05-21 12:50:45

Subversion快

2011-07-21 10:29:18

iPhone 開發(fā)

2010-07-27 15:53:15

2010-08-03 14:37:30

Flex入門教程

2010-06-13 09:45:35

Widget開發(fā)

2012-05-10 08:29:46

XcodeiOSPhoneGap

2013-08-29 14:28:09

StormHadoop

2024-11-12 15:46:37

2010-07-20 16:19:54

Perl

2018-03-22 14:59:13

Docker入門容器
點贊
收藏

51CTO技術(shù)棧公眾號