久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Mybatis有什么用

151次閱讀
沒有評論

共計 4294 個字符,預(yù)計需要花費(fèi) 11 分鐘才能閱讀完成。

這篇文章將為大家詳細(xì)講解有關(guān) Mybatis 有什么用,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

簡介

MyBatis 的前身叫 iBatis,本是 apache 的一個開源項目, 2010 年這個項目由 apache software foundation 遷移到了 google code,并且改名為 MyBatis。MyBatis 是支持普通 SQL 查詢,存儲過程和高級映射的優(yōu)秀持久層框架。MyBatis 消除了幾乎所有的 JDBC 代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis 使用簡單的 XML 或注解用于配置和原始映射,將接口和 Java 的 POJOs(Plan Old Java Objects,普通的 Java 對象)映射成數(shù)據(jù)庫中的記錄。

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ǔ)的支撐。

 

快速入門

Mybatis 的整體流程圖

SqlSessionFactoryBuilder

每一個 MyBatis 的應(yīng)用程序的入口是 SqlSessionFactoryBuilder,它的作用是通過 XML 配置文件創(chuàng)建 Configuration 對象(當(dāng)然也可以在程序中自行創(chuàng)建),然后通過 build 方法創(chuàng)建 SqlSessionFactory 對象。沒有必要每次訪問 Mybatis 就創(chuàng)建一次 SqlSessionFactoryBuilder,通常的做法是創(chuàng)建一個全局的對象就可以了。示例程序如下:

[java] view plain copy

private static SqlSessionFactoryBuilder sqlSessionFactoryBuilder; 

private static SqlSessionFactory sqlSessionFactory; 

private static void init() throws IOException { 

 String resource =  mybatis-config.xml ; 

 Reader reader = Resources.getResourceAsReader(resource); 

 sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder(); 

 sqlSessionFactory = sqlSessionFactoryBuilder.build(reader); 

SqlSessionFactory

SqlSessionFactory 對象由 SqlSessionFactoryBuilder 創(chuàng)建。它的主要功能是創(chuàng)建 SqlSession 對象,和 SqlSessionFactoryBuilder 對象一樣,沒有必要每次訪問 Mybatis 就創(chuàng)建一次 SqlSessionFactory,通常的做法是創(chuàng)建一個全局的對象就可以了。SqlSessionFactory 對象一個必要的屬性是 Configuration 對象, 它是保存 Mybatis 全局配置的一個配置對象,通常由 SqlSessionFactoryBuilder 從 XML 配置文件創(chuàng)建。這里給出一個簡單的示例:

[html] view plain copy

?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  

  !–  配置別名  —  

  typeAliases  

  typeAlias type= org.iMybatis.abc.dao.UserDao  alias= UserDao  /  

  typeAlias type= org.iMybatis.abc.dto.UserDto  alias= UserDto  /  

  /typeAliases  

 

  !–  配置環(huán)境變量  —  

  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://127.0.0.1:3306/iMybatis?characterEncoding=GBK  /  

  property name= username  value= iMybatis  /  

  property name= password  value= iMybatis  /  

  /dataSource  

  /environment  

  /environments  

 

  !–  配置 mappers —  

  mappers  

  mapper resource= org/iMybatis/abc/dao/UserDao.xml  /  

  /mappers  

 

/configuration  

要注意 XML 頭部的聲明,需要用來驗證 XML 文檔正確性。typeAliases  元素是包含所有 typeAlias(別名)的列表,別名用來替換完整類名,這樣在需要完整類名的地方就可以用別名來代替。environment 元素體中包含對事務(wù)管理和連接池的環(huán)境配置。mappers 元素是包含所有 mapper(映射器)的列表,這些 mapper 的 XML 文件包含 SQL 代碼和映射定義信息。當(dāng)然,在 XML 配置文件中還有很多可以配置的,上面的示例指出的則是最關(guān)鍵的部分,其他配置請參考 Mybatis 的官方文檔。

SqlSession

SqlSession 對象的主要功能是完成一次數(shù)據(jù)庫的訪問和結(jié)果的映射,它類似于數(shù)據(jù)庫的 session 概念,由于不是線程安全的,所以 SqlSession 對象的作用域需限制方法內(nèi)。SqlSession 的默認(rèn)實現(xiàn)類是 DefaultSqlSession,它有兩個必須配置的屬性:Configuration 和 Executor。Configuration 前文已經(jīng)描述這里不再多說。SqlSession 對數(shù)據(jù)庫的操作都是通過 Executor 來完成的,Executor 的具體功能在下一小節(jié)在描述。

到目前為止,我們看到的都是 mybatis 的流程,我們的應(yīng)用程序在什么地方插入到這個流程中并獲得我們想要的結(jié)果呢?就是 SqlSession 這里。SqlSession 有一個重要的方法 getMapper,顧名思義,這個方式是用來獲取 Mapper 對象的。什么是 Mapper 對象?根據(jù) Mybatis 的官方手冊,應(yīng)用程序除了要初始并啟動 Mybatis 之外,還需要定義一些接口,接口里定義訪問數(shù)據(jù)庫的方法,存放接口的包路徑下需要放置同名的 XML 配置文件。SqlSession 的 getMapper 方法是聯(lián)系應(yīng)用程序和 Mybatis 紐帶,應(yīng)用程序訪問 getMapper 時,Mybatis 會根據(jù)傳入的接口類型和對應(yīng)的 XML 配置文件生成一個代理對象,這個代理對象就叫 Mapper 對象。應(yīng)用程序獲得 Mapper 對象后,就應(yīng)該通過這個 Mapper 對象來訪問 Mybatis 的 SqlSession 對象,這樣就達(dá)到里插入到 Mybatis 流程的目的。示例代碼如下:

[java] view plain copy

SqlSession session= sqlSessionFactory.openSession(); 

UserDao userDao = session.getMapper(UserDao.class); 

UserDto user = new UserDto(); 

user.setUsername(iMybatis); 

List UserDto  users = userDao.queryUsers(user); 

對應(yīng)的接口:

[java] view plain copy

public interface UserDao { 

 public List UserDto  queryUsers(UserDto user) throws Exception; 

對應(yīng)的配置文件:

[html] view plain copy

?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= org.iMybatis.abc.dao.UserDao  

  select id= queryUsers  parameterType= UserDto  resultType= UserDto  

 useCache= false  

  ![CDATA[ 

 select * from t_user t where t.username = #{username} 

 ]]  

  /select  

/mapper  

Executor

Executor 對象在創(chuàng)建 Configuration 對象的時候創(chuàng)建,并且緩存在 Configuration 對象里。Executor 對象的主要功能是調(diào)用 StatementHandler 訪問數(shù)據(jù)庫,并將查詢結(jié)果存入緩存中(如果配置了緩存的話)。

StatementHandler

StatementHandler 是真正訪問數(shù)據(jù)庫的地方,并調(diào)用 ResultSetHandler 處理查詢結(jié)果。

ResultSetHandler

處理查詢結(jié)果

關(guān)于“Mybatis 有什么用”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-19發(fā)表,共計4294字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 宝应县| 甘南县| 宣威市| 苍梧县| 瑞昌市| 南涧| 漳平市| 搜索| 凤冈县| 建瓯市| 彰化县| 安平县| 南漳县| 繁峙县| 富川| 富民县| 株洲县| 巨鹿县| 乌海市| 秀山| 静海县| 辽阳县| 若羌县| 特克斯县| 沁源县| 红原县| 施秉县| 绍兴县| 青浦区| 海兴县| 吴川市| 周至县| 星座| 宁武县| 乐清市| 张家界市| 海南省| 独山县| 阳谷县| 墨江| 仙桃市|