Java 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 檔案。
功能架構
Mybatis的功能架構分為三層:
- API介面層:提供給外部使用的介面API,開發人員通過這些本地API來操縱資料庫。介面層一接收到呼叫請求就會呼叫資料處理層來完成具體的資料處理。
- 資料處理層:負責具體的SQL查詢、SQL解析、SQL執行和執行結果對映處理等。它主要的目的是根據呼叫的請求完成一次資料庫操作。
- 基礎支撐層:負責最基礎的功能支撐,包括連線管理、事務管理、配置載入和快取處理,這些都是共用的東西,將他們抽取出來作為最基礎的元件。為上層的資料處理層提供最基礎的支撐。
多需要新增的驅動包:
下面進行快速入門:
目錄如下:
實體類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標籤中編寫查詢的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"?> <!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" /> <!-- 配置資料庫連線資訊 --> <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()); } }
結果:
相關文章
- SpringMVC框架入門SpringMVC框架
- Spring框架入門Spring框架
- Flask框架入門Flask框架
- ABP框架入門框架
- Mybatis1.0——框架入門,從0到簡單增刪改查資料MyBatis框架
- 易車網實戰+【保姆級】:Feapder爬蟲框架入門教程爬蟲框架
- Casbin訪問控制框架入門框架
- SpringBoot+MySQL+MyBatis的入門教程Spring BootMySqlMyBatis
- Java持久層框架Mybatis入門Java框架MyBatis
- Java技術分享:小白如何入門Mybatis?JavaMyBatis
- J.U.C之Executor框架入門指引框架
- CSharp使用Thrift作為RPC框架入門(一)CSharpRPC框架
- CQRS架構和Axon框架入門實踐架構框架
- YoyoGo微服務框架入門系列-基本概念Go微服務框架
- mybatis教程MyBatis
- 【Mybatis】Mybatis快速入門MyBatis
- MyBatis(二)MyBatis入門程式(MyBatis demo)MyBatis
- MyBatis系列(一):MyBatis入門MyBatis
- MyBatis從入門到精通(一):MyBatis入門MyBatis
- Java入門教程七(陣列)Java陣列
- OAuth 2.0(Open Authorization 2.0)授權框架入門介紹OAuth框架
- Spark大資料處理框架入門(單機版)Spark大資料框架
- YoyoGo微服務框架入門系列-快速編寫WEB APIGo微服務框架WebAPI
- MyBatis 入門MyBatis
- Mybatis入門MyBatis
- 好程式設計師Java教程分享MyBatis Plus介紹程式設計師JavaMyBatis
- Java入門教程八(物件導向)Java物件
- Java入門教程四(字串處理)Java字串
- MyBatis(一) 入門MyBatis
- mybatis快速入門MyBatis
- mybatis入門程式MyBatis
- 知新 | koa框架入門到熟練第一章框架
- Newbe.Claptrap 框架入門,第二步 —— 建立專案APT框架
- Java入門到精通完整教程,學Java先收藏了!Java
- Java教程:nacos入門系列之配置中心Java
- Java入門教程十二(集合與泛型)Java泛型
- Java入門教程十一(異常處理)Java
- Java入門教程十三(多執行緒)Java執行緒