MyBatis 是一款優秀的持久層框架,它支持自定義 SQL、存儲過程以及高級映射。MyBatis 免除了幾乎全部的 JDBC 代碼以及設置參數和獲取結果集的工做。MyBatis 能夠經過簡單的 XML 或註解來配置和映射原始類型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 對象)爲數據庫中的記錄。
css
1.基於SQL語法,簡單易學。 2.能瞭解底層組裝過程。 3.SQL語句封裝在配置文件中,便於統一管理與維護,下降了程序的耦合度。` 4.程序調試方便。 全部sql語句,所有定義在xml(建議)中。也能夠經過註解的方式在接口上實現。這些映射文件稱之爲mapper。
對象關係映射 思想:對象模型和關係模型的映射。 把對象領域的一個類映射爲關係領域的一個表。 類的屬性映射爲表的字段。 類的一個對象映射爲表的一行記錄。 在java程序中,把對數據庫表記錄的操做映射爲對java對象的操做。 Hibernate 純ORM映射框架 ,不須要編寫sql語句。 編寫Hql語句。 Mybatis 半ORM映射框架, sql語句須要程序員編寫。
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包
html
其中與日誌有關的爲log4j和slf4j slf4j是日誌的規範,log4j是規範的實現 javassist與cblib是代理工具,用來生成代理類 javassist是java的動態代理,cglib是第三方代理 (代理是什麼?好比你想買華爲手機,不是去華爲總部,而是去華爲的銷售店,銷售店的手機與總部生產的手機是同樣的,那麼銷售店就是總部的一個代理。因此代理類與目標類中的方法是相同的) 用mybatis開發工具,須要把jar包拷到工程下,可是用maven的話,直接添加依賴就好了
Maven項目對象模型(POM),能夠經過一小段描述信息來管理項目的構建,報告和文檔的項目管理工具軟件。
如今Maven多用與管理依賴java
直接點擊下一步,選擇模板可能會致使項目目錄不全mysql
構件座標就是maven用來找jar包的座標,分爲三部分
GroupId(域名的反寫)、ArtifactId(項目名)、版本號
建立好後,個人目錄結構爲
程序員
在maven所在文件夾下的conf中,找到settings.xml(默認路徑在c盤user下的.m2中)
在該文件中還能夠修改鏡像文件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
引用數據庫的文件
按照本身的數據庫修更名稱與帳號密碼
其餘的在註釋中已經寫的比較清楚了api