1. 程式人生 > >selectByExample和selectByExampleWithBLOBs的區別

selectByExample和selectByExampleWithBLOBs的區別

 我們先來看一段MyBatis逆向工程生成的程式碼。

<select id="selectByExample" parameterType="cn.e3mall.pojo.TbItemDescExample" resultMap="BaseResultMap">
<select id="selectByExampleWithBLOBs" parameterType="cn.e3mall.pojo.TbItemDescExample" resultMap="ResultMapWithBLOBs">

 經過檢視,我們可以發現,resultMap不同。

 接下來我們在看resultMap的內容。

selectByExample的resultMap:

<resultMap id="BaseResultMap" type="cn.e3mall.pojo.TbItemDesc">
    <id column="item_id" jdbcType="BIGINT" property="itemId" />
    <result column="created" jdbcType="TIMESTAMP" property="created" />
    <result column="updated" jdbcType="TIMESTAMP" property="updated" />
  </resultMap>

 

selectByExampleWithBLOBs的resultMap:

<resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="cn.e3mall.pojo.TbItemDesc">
    <result column="item_desc" jdbcType="LONGVARCHAR" property="itemDesc" />
  </resultMap>

對比之後我們可以看出selectByExampleWithBLOBs的返回值ResultMapWithBLOBs是繼承自selectByExample的返回值BaseResultMap,他擁有BaseResultMap的全部屬性。

總結:

1、兩個方法的返回的resultMap 不同

selectByExample  方法返回:BaseResultMap。

selectByExampleWithBLOBs  方法返回:ResultMapWithBLOBs。

ResultMapWithBLOBs 定義時,繼承了BaseResultMap,並且自己特殊的欄位,該欄位通常是longvarchar型別。

2、使用場景不同

若檢索大欄位時,則需要使用selectByExampleWithBLOBs  ,一般情況則使用selectByExample  即可。

注意:如果我們要在資料庫中查詢的結果集中,包含text型別的欄位,一定要用selectByExampleWithBLOBs,否則會查不到對應欄位的結果集。