先貼一段MyBatis逆向工程自動(dòng)生成的xml配置文件片段
selectByExample.png
selectByExampleWithBLOBs.png
可以看出栅迄,兩段SQL查詢(xún)返回的resultMap不同皆怕,一個(gè)是BaseResultMap,另一個(gè)是ResultMapWithBLOBs愈腾。再來(lái)看一下這兩個(gè)自定義resultMap的配置
BaseResultMap.png
ResultMapWithBLOBs.png
ResultMapWithBLOBs繼承了BaseResultMap顶滩,不僅有了BaseResultMap中的屬性寸爆,同時(shí)也有了自己的paramData屬性。可為什么MyBatis單獨(dú)將param_data列拿出來(lái)作為一個(gè)自定義resultMap呢仅醇?param_data列的指定jdbcType為longvarchar類(lèi)型魔种,而這個(gè)jdbcType屬性是JDBC需要用到的,MyBatis用不到叶摄。再來(lái)看一下數(shù)據(jù)庫(kù)表結(jié)構(gòu)
tb_item_param.png
param_data字段類(lèi)型為text安拟。故如需檢索的字段中包含大字段類(lèi)型時(shí),必須用selectByExampleWithBLOBs糠赦,不檢索大字段時(shí)锅棕,用selectByExample就足夠了淌山。update同樣如此。
有什么辦法可以在MyBatis逆向工程時(shí)不需要針對(duì)大字段類(lèi)型單獨(dú)生成一個(gè)resultMap來(lái)操作呢泼疑?
<table schema="" tableName="tb_content">
<columnOverride column="param_data" javaType="java.lang.String" jdbcType="VARCHAR" />
</table>
這樣在逆向工程時(shí),param_data列的jdbcType就會(huì)自動(dòng)轉(zhuǎn)換成VARCHAR類(lèi)型脆炎,也就不會(huì)再生成后綴為Blobs的方法了氓辣。