原創(chuàng)作品,可以轉載,但是請標注出處地址:http://www.cnblogs.com/V1haoge/p/6715063.html
1、回顧
之前的兩篇分別解析了類型別名注冊器和類型處理器注冊器,此二者皆是解析XML映射文件中參數(shù)類型與返回結果類型的基礎,別名注冊器用于通過別名找到對應的類類型,類型處理器注冊器則用于通過類類型來找到對應了類型處理器與數(shù)據(jù)庫類型,以此來完成進出數(shù)據(jù)庫數(shù)據(jù)與java之間類型的轉換。
我們在類型處理器注冊器一篇中已經(jīng)簡單介紹了類型處理器,那就是用于java類型與數(shù)據(jù)庫類型之間進行映射處理的工具類,這一篇中要詳細解析一下MyBatis中的類型處理器。
2、類型處理器
2.1 類架構
從上面的圖中可以看出MyBatis中整個類型處理器實現(xiàn)架構,TypeHandler接口定義了類型處理器,而TypeReference抽象類則定義了一個類型引用,用于引用一個泛型類型(此處很抽象,不好理解,詳見后續(xù)解析),BaseTypeHandler則是類型處理器的基礎,是所有類型處理器的公共模塊,幾乎所有的類型處理器都是通過直接繼承BaseTypeHandler來實現(xiàn)的。