[MyBatis原始碼分析系列] DatabaseIdProvider
DatabaseIdProvider
簡介
應該返回一個可以辨別資料庫型別的id。
此id可以用於稍後對於不資料庫型別構建不同的查詢。
此機制可以支援多個vendors或版本。
程式碼
public interface DatabaseIdProvider {
void setProperties(Properties p);
String getDatabaseId(DataSource dataSource) throws SQLException;
}
相關推薦
[MyBatis原始碼分析系列] DatabaseIdProvider
DatabaseIdProvider 簡介 應該返回一個可以辨別資料庫型別的id。 此id可以用於稍後對於不資料庫型別構建不同的查詢。 此機制可以支援多個vendors或版本。 程式碼 public interface DatabaseIdProvider { void
[Mybatis原始碼分析系列]]03 TypeAliasRegistry
TypeAliasRegistry 負責註冊,儲存,獲取MyBatis別名的類 typeAliases(別名介紹) 類型別名是為 Java 型別設定一個短的名字。它只和 XML 配置有關,存在的意義僅在於用來減少類完全限定名的冗餘。例如: <typeAliases>
[Mybatis原始碼分析系列] 01 解析mybatis-config.xml配製檔案並返回SqlSessionFactory的類SqlSessionFactoryBuilder
前言 公司一直在使用Jpa + Hibernate那一套東西,但是這套技術封裝的太過後重。不利於開發人員掌握,而在優化sql方面也是蛋疼的很。所以在後臺不是特別重要的專案中引入了MyBatis。當然光會使用,是滿足不了本吊絲的胃口,所以走上了分析MyBatis原始碼的道路,並有了這一系列
[MyBatis原始碼分析系列] ResolverUtil
ResolverUtil ResolverUtil用於查詢在類路徑可用並滿足任意條件的類。最常見的兩種情況是一個類繼承或實現了另一個類,或者此類被指定的註解標記了。然而,通過使用Test類,可以滿足任意條件的搜尋。 類載入器用於定位類路徑下指定包下面的必要類,然後載入並檢驗他們。預設
[MyBatis原始碼分析系列] SqlSession, DefaultSqlSession
SqlSession 簡介 使用MyBatis工作時,主要的Java介面。 通過此介面你可以執行命令,獲取對映及管理事務。 原始碼 public interface SqlSession extends Closeable { <T> T selectOne(S
[MyBatis原始碼分析系列] Discriminator
Discriminator 簡介 鑑別器 <discriminator javaType="int" column="draft"> <case value="1" resultType="DraftPost"/> </discriminator
[MyBatis原始碼分析系列] BoundSql
BoundSql 簡介 從SqlSource得到的處理了動態內容的真正的SQL。這個SQL可以有?佔位符和一系列引數。 也可以是由動態語言(如loops,bind)建立的額外的引數。 原始碼 public class BoundSql { private final Str
[MyBatis原始碼分析系列] Environment
Environment 簡介 MyBatis 可以配置成適應多種環境,這種機制有助於將 SQL 對映應用於多種資料庫之中, 現實情況下有多種理由需要這麼做。例如,開發、測試和生產環境需要有不同的配置;或者共享相同 Schema 的多個生產資料庫, 想使用相同的 SQL 對映。許多類似
[MyBatis原始碼分析系列] TransactionFactory
TransactionFactory 簡介 建立Transaction例項。 原始碼 public interface TransactionFactory { /** 設定事務工廠自定義的屬性 */ void setProperties(Properties prop
[MyBatis原始碼分析系列] Transaction
Transaction 簡介 包裝資料庫的連線java.sql.Connection。 處理連線的生命週期:建立,預編譯,提交/回滾和關閉。 原始碼 public interface Transaction { Connection getConnection() thro
[MyBatis原始碼分析系列] StatementType, ResultSetType, SqlCommandType, FetchType, ParameterMode等列舉類
StatementType public enum StatementType{ STATEMENT, PREPARED, CALLABLE; } 分別對應MySQL的普通語句,預處理語句,儲存過程。 SqlCommandType public enum SqlComma
[MyBatis原始碼分析系列] TransactionFactory
TransactionFactory 簡介 建立Transaction例項。 原始碼 public interface TransactionFactory { /** 設定事務工廠自定義的屬性 */ void setProperties(Properti
MyBatis架構設計及原始碼分析系列(一):MyBatis架構
如果不太熟悉MyBatis使用的請先參見MyBatis官方文件,這對理解其架構設計和原始碼分析有很大好處。 一、概述 MyBatis並不是一個完整的ORM框架,其官方首頁是這麼介紹自己 The MyBatis data mapper framework makes i
MyBatis架構設計及原始碼分析系列 :MyBatis架構
ORM是Object和Relation之間的對映,包括Object->Relation和Relation->Object兩方面。Hibernate是個完整的ORM框架,而MyBatis完成的是Relation->Object,也就是其所說的data mapper framework。關於O
深入淺出Mybatis系列(一)---Mybatis原始碼分析環境準備
Mybatis原始碼分析環境準備 原始碼下載地址: https://blog.mybatis.org/p/products.
【Spring Boot】(29)、SpringBoot整合Mybatis原始碼分析
在【Spring Boot】(23)、Spring Boot整合Mybatis的章節中講述了SpringBoot整合Mybatis的過程,以及一些配置說明,這節主要講解一下整合的原始碼。 廢話不多說,直接進入今天的主題。 閱讀過我之前寫的文章的童靴,肯定知道SpringBoot整合第三方
Mybatis 原始碼分析(2)—— 引數處理
Mybatis對引數的處理是值得推敲的,不然在使用的過程中對發生的一系列錯誤直接懵逼了。 以前遇到引數繫結相關的錯誤我就是直接給加@param註解,也稀裡糊塗地解決了,但是後來遇到了一些問題推翻了我的假設:單個引數不需要使用 @param 。由此產生了一個疑問,Mybatis到底是怎
Mybatis 原始碼分析(9)—— 事物管理
Mybatis 提供了事物的頂層介面: public interface Transaction { /** * Retrieve inner database connection * @return DataBase connection * @throw
Mybatis 原始碼分析(8)—— 一二級快取
一級快取 其實關於 Mybatis 的一級快取是比較抽象的,並沒有什麼特別的配置,都是在程式碼中體現出來的。 當呼叫 Configuration 的 newExecutor 方法來建立 executor: public Executor newExecutor(Transac
Mybatis原始碼分析(7)—— 結果集處理
解析封裝 ResultMap 是和結果集相關的東西,最初在解析 XML 的時候,於 parseStatementNode 方法中,針對每一個 select 節點進行解析,轉換為 MappedStatement(類似 Spring 的 bean 配置和 BeanDefinition 的