MyBatis中selectByExample和selectByExampleWithBLOBs区别

先贴一段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用不到。再来看一下数据库表结构
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就会自动转换成VARCHAR类型,也就不会再生成后缀为Blobs的方法了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,645评论 0 4
  • mybatis 动态SQL以及和spring的集成 3.6 动态SQL 有时候,静态的 SQL 语句并不能满足应用...
    小Q逛逛阅读 1,313评论 0 2
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • 官方文档 简介 入门 XML配置 XML映射文件 动态SQL Java API SQL语句构建器 日志 一、 JD...
    拾壹北阅读 3,552评论 0 52
  • 以前总是觉得时间可怕,没想过会和一个人谈9年恋爱;一个人用三年时间健身成美男会让我惊叹不已。我从来也没有觉得自己能...
    踏着朝阳阅读 262评论 0 2