先貼一段MyBatis逆向工程自動生成的xml配置文件片段

selectByExample.png

selectByExampleWithBLOBs.png
可以看出,兩段SQL查詢返回的resultMap不同,一個是BaseResultMap,另一個是ResultMapWithBLOBs。再來看一下這兩個自定義resultMap的配置

BaseResultMap.png

ResultMapWithBLOBs.png
ResultMapWithBLOBs繼承了BaseResultMap,不僅有了BaseResultMap中的屬性,同時也有了自己的paramData屬性。可為什么MyBatis單獨將param_data列拿出來作為一個自定義resultMap呢?param_data列的指定jdbcType為longvarchar類型,而這個jdbcType屬性是JDBC需要用到的,MyBatis用不到。再來看一下數(shù)據(jù)庫表結(jié)構

tb_item_param.png
param_data字段類型為text。故如需檢索的字段中包含大字段類型時,必須用selectByExampleWithBLOBs,不檢索大字段時,用selectByExample就足夠了。update同樣如此。
有什么辦法可以在MyBatis逆向工程時不需要針對大字段類型單獨生成一個resultMap來操作呢?
<table schema="" tableName="tb_content">
<columnOverride column="param_data" javaType="java.lang.String" jdbcType="VARCHAR" />
</table>
這樣在逆向工程時,param_data列的jdbcType就會自動轉(zhuǎn)換成VARCHAR類型,也就不會再生成后綴為Blobs的方法了。