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