MyBatis中selectByExample和selectByExampleWithBLOBs区别

MyBatis中selectByExample和selectByExampleWithBLOBs区别

先贴一段自动生成的Mapper代码

  <select id="selectByExample" parameterType="com.pojo.TbItemParamExample" resultMap="BaseResultMap">
<select id="selectByExampleWithBLOBs" parameterType="com.pojo.TbItemParamExample" resultMap="ResultMapWithBLOBs">

到这里发现他们的返回值不同。

<resultMap id="BaseResultMap" type="com.pojo.TbItemParam">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 27 16:29:38 CST 2018.
    -->
    <id column="id" jdbcType="BIGINT" property="id" />
    <result column="item_cat_id" jdbcType="BIGINT" property="itemCatId" />
    <result column="created" jdbcType="TIMESTAMP" property="created" />
    <result column="updated" jdbcType="TIMESTAMP" property="updated" />
  </resultMap>
 <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.pojo.TbItemParam">
    <!--
      WARNING - @mbg.generated
      This element is automatically generated by MyBatis Generator, do not modify.
      This element was generated on Mon Aug 27 16:29:38 CST 2018.
    -->
    <result column="param_data" jdbcType="LONGVARCHAR" property="paramData" />
  </resultMap>

可以看出selectByExampleWithBLOBs的返回值ResultMapWithBLOBs是继承自selectByExample的返回值BaseResultMap,他拥有BaseResultMap的全部属性,并且拥有自己特有的属性param_data,而数据库param_data的类型为text,text的最大长度约为64KB,所以要使用blob。



数据库有四种text,分别对应四种blob。
TinyBlob 最大长度255个字元(2^8-1) ==>255
TinyText 最大长度255个字元(2^8-1)
Blob 最大长度65535个字元(2^16-1) ==>64KB
Text 最大长度65535个字元(2^16-1)
MediumBlob 最大长度 16777215 个字元(2^24-1) ==>16MB
MediumText 最大长度 16777215 个字元(2^24-1)
LongBlob 最大长度4294967295个字元 (2^32-1) ==>4GB
LongText 最大长度4294967295个字元 (2^32-1)

参考自:

https://www.cnblogs.com/pureEve/p/6015000.html
https://www.jianshu.com/p/492ffd296a74?utm_campaign

原文地址:http://blog.51cto.com/12434484/2323778

时间: 2024-07-31 18:50:28

MyBatis中selectByExample和selectByExampleWithBLOBs区别的相关文章

zbb20180827 Mybatis中#{}和${}有什么区别?

1.Mybatis中#{}和${}有什么区别? (1) #{} 和 ${} 在预编译中的处理是不一样的.#{} 在预处理时,会把参数部分用一个占位符 ? 代替,而${}直接已字符串代替 例如: select * from tablename where name=#{name} 预编译的时候处理成 select * from tablename where name=? 而 select * from tablename where name=${name} 会在预编译中处理成 select *

[转]MyBatis中resultType与resultMap区别

MyBatis中关于resultType和resultMap的具体区别如下: MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMap.resultType是直接表示返回类型的(对应着我们的model对象中的实体):resultMap则是对外部ResultMap的引用(提前定义了db和model之间的隐射key-->value关系):resultType跟resultMap不能同时存在. 在MyBatis进行查询映射时,其实查询出来的每一个

Mybatis中的#{}和${}的区别?

1,首先Mybatis中的#{}与${}到底有什么区别? #{}:表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入. #{}可以接收简单类型值或pojo属性值. 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称.“%”#{name}”%” ${}:表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类

浅谈 Mybatis中的 ${ } 和 #{ }的区别

一.举例说明 1 select * from user where name = "dato"; 2 3 select * from user where name = #{name}; 4 5 select * from user where name = ${name}; 一般情况下,我们都不会注意到这里面有什么不一样的地方.因为这些sql都可以达到我们的目的,去查询名字叫dato的用户. 二.区别 动态 SQL 是 mybatis 的强大特性之一,也是它优于其他 ORM 框架的一

mybatis中#和$符号的区别

mybatis做为一个轻量级ORM框架在许多项目中使用,因其简单的入门受到了广大开发者的热爱.在近期项目中再做一个相关的开发,碰到了#.$符号这样的问题,之前没怎么注意过,通过学习之后,有了点感悟,分享如下, #{}  使用#{}意味着使用的预编译的语句,即在使用jdbc时的preparedStatement,sql语句中如果存在参数则会使用?作占位符,我们知道这种方式可以防止sql注入,并且在使用#{}时形成的sql语句,已经带有引号,例,select  * from table1 where

MyBatis 中#和$符号的区别

#相当于对数据 加上 双引号,$相当于直接显示数据 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中.如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_

浅谈mybatis中的#和$的区别

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中.如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id, 如果传入的值是id,则解析成的sql为ord

mybatis中的#和$的区别

1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中.如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_id,  如果传入的值是id,则解析成的sql为or

mybatis中的#和$的区别(转)

#相当于对数据 加上 双引号,$相当于直接显示数据 1. #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号.如:order by #user_id#,如果传入的值是111,那么解析成sql时的值为order by "111", 如果传入的值是id,则解析成的sql为order by "id". 2. $将传入的数据直接显示生成在sql中.如:order by $user_id$,如果传入的值是111,那么解析成sql时的值为order by user_