想象這么一個(gè)場(chǎng)景。在類中用String類型修飾Person的性別(男女),在數(shù)據(jù)庫(kù)中用int類型來(lái)修飾男女(1,0)。那么這兩者怎么映射?
這就需要用到類型處理器。mybatis內(nèi)置類型處理器。但是有時(shí)內(nèi)置的轉(zhuǎn)換器不夠用下面研究一下如何自定義類型轉(zhuǎn)換器。
我們就用本文開(kāi)頭的例子,且不論合不合理,用自定義類型處理器的方法來(lái)實(shí)現(xiàn)上述轉(zhuǎn)換。
新建Person類

新建person表

新建處理器類PersonSexTypeHandler ,繼承BaseTypeHandler

把T換成String,重寫方法

下面來(lái)介紹每個(gè)方法的含義

該方法完成從java到DB這個(gè)方向的類型轉(zhuǎn)換,其中參數(shù):
*? ps:PreparedStatement對(duì)象
*? i:PreparedStatement對(duì)象操作參數(shù)的位置
*? parameter:java類型
*? jdbcType:jdbc數(shù)據(jù)庫(kù)類型
其余三種方式均是從DB往java這個(gè)方向轉(zhuǎn)換



至此,自定義類型處理器完成
然后在配置文件配置類型處理器

下面編寫mapper.xml映射文件 顯然用到resultMap

注意這里在映射轉(zhuǎn)換的屬性時(shí)同樣要標(biāo)識(shí)參與轉(zhuǎn)換的兩種類型
編寫查詢轉(zhuǎn)換SQL,并測(cè)試(從 int類型到String類型)



編寫插入SQL并測(cè)試(從String類型到int類型)



Bug:錯(cuò)誤的sex值。之前在編寫select語(yǔ)句時(shí)額外標(biāo)識(shí)了轉(zhuǎn)換雙方的類型,同樣這里在編寫insert語(yǔ)句同樣需要標(biāo)識(shí)

測(cè)試成功,成功增加7777的數(shù)據(jù)

才疏學(xué)淺之處,切莫在意。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?——2019.6.3 上午