記錄21.08.04 — mybatis入門學習

mybatis入門

mybatis簡介

MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎全部的 JDBC 代碼以及設置參數和獲取結果集的工做。MyBatis 能夠經過簡單的 XML 或註解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。
imagecss

查看mybatis文檔

優勢

1.基於SQL語法,簡單易學。
2.能瞭解底層組裝過程。 
3.SQL語句封裝在配置文件中,便於統一管理與維護,下降了程序的耦合度。`
4.程序調試方便。
全部sql語句,所有定義在xml(建議)中。也能夠經過註解的方式在接口上實現。這些映射文件稱之爲mapper。

ORM映射框架

對象關係映射
思想:對象模型和關係模型的映射。
把對象領域的一個類映射爲關係領域的一個表。
類的屬性映射爲表的字段。
類的一個對象映射爲表的一行記錄。

在java程序中,把對數據庫表記錄的操做映射爲對java對象的操做。
Hibernate 純ORM映射框架  ,不須要編寫sql語句。  編寫Hql語句。
Mybatis  半ORM映射框架,  sql語句須要程序員編寫。

Mybatis工做原理

Mybatis配置文件有2種
Mybatis的主配置文件,SqlMapConfig.xml  配置mybatis總體配置信息好比:鏈接池,settings,plugin,mapper........
一個工程下須要一個,保存在類路徑下。src
Mybatis的映射文件, xxxMapper.xml  好比:UserMapper.xml
該文件主要用來定義sql語句。保存在類路徑,也能夠保存在其餘目錄
SqlSessionFactory 用來管理SqlSession對象。
SqlSession對象,對Connection對象的封裝。
SelSessionFactory 重量級的對象,建立耗費資源。屬於單例對象,線程安全的。
SqlSession對象,線程不安全的,輕量級對象,每次對數據庫的操做使用獨立的SqlSession對象。
在Mybatis映射文件中,定義的一條sql語句,有多個組成部分,
包括:sql 語句,惟一的id,輸入參數,輸出參數等。
是一個總體,稱做是一個statement。
Statement的做用:把輸入參數,輸出參數和sql語句整合到一塊兒。
Execution 執行器
用來執行一個statement,把sql語句提交到數據庫並執行。

mybatis用到的jar包
imagehtml

其中與日誌有關的爲log4j和slf4j
slf4j是日誌的規範,log4j是規範的實現
javassist與cblib是代理工具,用來生成代理類
javassist是java的動態代理,cglib是第三方代理
(代理是什麼?好比你想買華爲手機,不是去華爲總部,而是去華爲的銷售店,銷售店的手機與總部生產的手機是同樣的,那麼銷售店就是總部的一個代理。因此代理類與目標類中的方法是相同的)
用mybatis開發工具,須要把jar包拷到工程下,可是用maven的話,直接添加依賴就好了

maven簡介

Maven項目對象模型(POM),能夠經過一小段描述信息來管理項目的構建,報告和文檔的項目管理工具軟件。
如今Maven多用與管理依賴java

建立一個maven項目

image

直接點擊下一步,選擇模板可能會致使項目目錄不全mysql

image
構件座標就是maven用來找jar包的座標,分爲三部分
GroupId(域名的反寫)、ArtifactId(項目名)、版本號
建立好後,個人目錄結構爲
image程序員

修改倉庫

在maven所在文件夾下的conf中,找到settings.xml(默認路徑在c盤user下的.m2中)
image
在該文件中還能夠修改鏡像文件spring

引入依賴

在pom.xml文件中導入依賴sql

<dependencies>
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.4.4</version>
	</dependency>
	<dependency>
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>8.0.17</version>
	</dependency>
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.11</version>
	</dependency>
	<dependency>
		<groupId>log4j</groupId>
		<artifactId>log4j</artifactId>
		<version>1.2.14</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-api</artifactId>
		<version>1.7.25</version>
	</dependency>
	<dependency>
		<groupId>commons-logging</groupId>
		<artifactId>commons-logging</artifactId>
		<version>1.1.1</version>
		<type>pom.lastUpdated</type>
	</dependency>
	<dependency>
		<groupId>org.apache.logging.log4j</groupId>
		<artifactId>log4j-core</artifactId>
		<version>2.5</version>
	</dependency>
	<dependency>
		<groupId>org.slf4j</groupId>
		<artifactId>slf4j-log4j12</artifactId>
		<version>1.7.12</version>
	</dependency>
	<dependency>
		<groupId>javassist</groupId>
		<artifactId>javassist</artifactId>
		<version>3.11.0.GA</version>
	</dependency>
	<dependency>
		<groupId>cglib</groupId>
		<artifactId>cglib</artifactId>
		<version>3.2.5</version>
	</dependency>
</dependencies>

引入的包與以前圖片中看到的同樣,還多幾個單元測試的
注意MySQL的版本改成本身的數據庫

配置文件

在resources中建立一個xml文件,名稱能夠隨意,可是規範的命名爲SqlMapConfig
內容比較固定apache

<?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>
    <!-- 引入properties資源文件   ,數據庫鏈接的資源文件-->
    <properties resource="DB.properties">
    </properties>

    <!-- 配置環境 -->
    <environments default="development">
        <environment id="development">
            <!-- 配置mybatis事務管理 ,jdbc的事務管理
                JDBC - 這個類型直接所有使用 JDBC 的提交和回滾功能。它依靠使用鏈接的數據源來管理事務的做用域。
                MANAGED  - 這個類型什麼不作 , 它從不提交 、 回滾和關閉鏈接 。 而是讓窗口來管理事務的所有生命週期 。
                (好比說 Spring 或者 JAVAEE 服務器)
              -->
            <transactionManager type="JDBC"/>
            <!-- 配置數據源
                 UNPOOLED :這個數據源實現只是在每次請求的時候簡單的打開和關閉一個鏈接。
                 雖然這有點慢,但做爲一些不須要性能和當即響應的簡單應用來講 , 不失爲一種好選擇
                 不用鏈接池。
                 POOLED : 使用鏈接池管理connection對象
                 JNDI :      使用其餘框架 如spring來管理鏈接
                 ${} OGNL表達式     在jsp頁面中%{}
              -->
            <dataSource type="POOLED">
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.user}"/>
            </dataSource>
        </environment>
    </environments>

    <!-- 加載映射文件 -->
    <mappers>
    </mappers>
</configuration>

xml文件的約束有兩種,一種是xsd一種是dtd
image
引用數據庫的文件
image
image
按照本身的數據庫修更名稱與帳號密碼
其餘的在註釋中已經寫的比較清楚了api

入門程序

mybatis入門程序

相關文章
相關標籤/搜索