Mybatis成爲Java互聯網時代首選持久框架的緣由

持久層能夠將業務數據存儲到磁盤,具有長期存儲能力,只要磁盤不損壞(大部分的重要數據都會有相關的備份機制),在斷電或者其餘狀況下,從新開啓系統仍然能夠讀取這些數據。通常執行持久任務的都是數據庫系統。持久層可使用巨大的磁盤空間,也比較廉價,它的肯定就是比較慢。java

Mybatis成爲java互聯網時代首選的持久框架

緣由:sql

1. 不屏蔽SQL ,意味着能夠更精確地定位sql語句,能夠對其進行優化和改造,這有利於互聯網系統性能的提升,符合互聯網須要性能優化的特色。數據庫

2. 提供強大、靈活的映射機制,方便java開發者使用。提供動態的sql的功能,容許咱們根據不一樣條件組裝sql,這個功能遠比其餘工具或java編碼的可讀性和可維護性高的多,知足各類應用系統的同時也知足了需求常常變化的互聯網應用的要求。編程

3. 在mybatis中,提供使用了Mapper接口編程,只要一個接口和一個XML就能建立映射器,進一步簡化咱們的工做,使得不少框架API在mybatis中消失,開發者更集中於業務邏輯。緩存


mybatis核心組件


  • SqlSessionFactoryBuilder(構造器):它會根據配置或者代碼來生成SqlSessionFactory,採用的是分佈構建的Builder模式。
  • SqlSessionFactory(工廠接口):依靠它來生成SqlSession,使用的是工廠模式。
  • SqlSession(會話),一個既能夠發送SQL執行返回結果,也能夠獲取Mapper的接口。在現有技術中,通常咱們會讓其在業務邏輯代碼中「消失」,而使用的是 MyBatis 提供的 SQL Mapper 接口編程技術,他能提升代碼的可讀性和可維護性。
  • SQL Mapper(映射器):Mybatis新設計存在的組件,它由一個java接口和XML文件(或註解)構成,須要給出對應的SQL和映射規則。它負責Sql去執行,並返回結果。
Mybatis成爲Java互聯網時代首選持久框架的緣由

 


SqlSession

在 Mybatis 中有兩個實現類,DefaultSqlSession 和 SqlSessionManager。性能優化

DefaultSqlSession是單線程使用的session

SqlSessionManager是多線程使用的。mybatis

做用:多線程

SqlSession的做用相似於一個JDBC中的 Connection對象,表明着一個鏈接資源的啓用。app

  1. 獲取Mapper接口。
  2. 發送SQL給數據庫。
  3. 控制數據庫事務。

一、建立 SqlSession

SqlSession sqlsession=SqlSessionFactory.openSession();
1

二、SqlSession控制數據庫事務

//定義SqlSession
SqlSession sqlsession=null;
try{
//打開SqlSession會話
sqlsession=SqlSessionFactory.openSession();
//some code ...
sqlsession.commit();//提交事務
}catch(Exception e){
sqlsession.rollback();
}finally{
//在finally語句中確保資源被順利關閉
if(SqlSession!=null)
sqlsession.close();
}

映射器

其有一個接口和對應的 xml 文件( 或註解 )組成。

它能夠配置以下內容:

  • 描述映射規則
  • 提供SQL語句,並能夠配置SQL參數類型、返回類型、緩存刷新等信息。
  • 配置緩存
  • 提供動態SQL

映射器的主要做用就是將 sql 查詢到的結果映射爲一個 POJO,或者將 POJO的數據插入到數據庫中,並定義一些關於緩存等重要內容

定義一個角色POJO

public class Role{
private Long id;
private String roleName;
private String note;
/*setter and getter*/
}

歡迎你們留言關注~轉發支持一波~

相關文章
相關標籤/搜索