Java Mybatis架構入門基礎教程,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的功能架構分為三層:
1、API介面層:提供給外部使用的介面API,開發人員通過這些本地API來操縱資料庫。介面層一接收到調用請求就會調用資料處理層來完成具體的資料處理。
2、資料處理層:負責具體的SQL尋找、SQL解析、SQL執行和執行結果映射處理等。它主要的目的是根據調用的請求完成一次資料庫操作。
3、基礎支撐層:負責最基礎的功能支撐,包括串連管理、交易管理、配置載入和緩衝處理,這些都是共用的東西,將他們抽取出來作為最基礎的組件。為上層的資料處理層提供最基礎的支撐。
多需要添加的驅動包:
下面進行快速入門:
目錄如下:
實體類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 {@Testpublic 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());}}
結果:
以上就是關於Java Mybatis架構入門基礎教程,希望對大家的學習有所協助。