欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MyBatis中selectByExample和selectByExampleWithBLOBs区别

程序员文章站 2022-07-08 10:17:33
文章目录结论先行配置片段结论先行selectByExampleWithBLOBs可以返回数据库中类型为text的字段selectByExample不会返回数据库中类型为text的字段配置片段先贴一段MyBatis逆向工程自动生成的xml配置文件片段可以看出,两段SQL查询返回的resultMap不同,一个是BaseResultMap,另一个是ResultMapWithBLOBs。再来看一下这两个自定义resultMap的配置ResultMapWithBLOBs继承了BaseResult...

文章目录

结论先行

selectByExampleWithBLOBs可以返回数据库中类型为text的字段
selectByExample不会返回数据库中类型为text的字段

配置片段

先贴一段MyBatis逆向工程自动生成的xml配置文件片段
MyBatis中selectByExample和selectByExampleWithBLOBs区别

MyBatis中selectByExample和selectByExampleWithBLOBs区别

可以看出,两段SQL查询返回的resultMap不同,一个是BaseResultMap,另一个是ResultMapWithBLOBs。再来看一下这两个自定义resultMap的配置
MyBatis中selectByExample和selectByExampleWithBLOBs区别
MyBatis中selectByExample和selectByExampleWithBLOBs区别

ResultMapWithBLOBs继承了BaseResultMap,不仅有了BaseResultMap中的属性,同时也有了自己的paramData属性。可为什么MyBatis单独将param_data列拿出来作为一个自定义resultMap呢?param_data列的指定jdbcType为longvarchar类型,而这个jdbcType属性是JDBC需要用到的,MyBatis用不到。再来看一下数据库表结构
MyBatis中selectByExample和selectByExampleWithBLOBs区别

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就会自动转换成VARCHAR类型,也就不会再生成后缀为Blobs的方法了。

本文地址:https://blog.csdn.net/qq_37886086/article/details/107406017