MyBatis Generator對於mysql text類型數據的處理||MyBatis生成的selectByExample方法獲取text類型數據得到空值


Mybatis自動生成的Xml文件,text數據類型會默認產生XXWithBlobs的方法,用以獲取含有該類型的數據

  • 所以,讀取含有text類型的數據的時候,應該使用XXWithBlobs的方法,否則會獲取到空值
  • 其次,只能修改數據類型了,改用varchar了

以下是MyBatis對於數據類型映射的操作解析

  • 如下,可以看到MyBatis對於類型的處理:

表數據,其中introductiontext類型數據

MyBatis Generator生成的mapper.xml片段:

  <resultMap id="BaseResultMap" type="com.liantao.bookMS.entity.Book">
    <id column="book_id" jdbcType="BIGINT" property="bookId" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="author" jdbcType="VARCHAR" property="author" />
    <result column="publish" jdbcType="VARCHAR" property="publish" />
    <result column="ISBN" jdbcType="VARCHAR" property="isbn" />
    <result column="language" jdbcType="VARCHAR" property="language" />
    <result column="price" jdbcType="DECIMAL" property="price" />
    <result column="pubdate" jdbcType="DATE" property="pubdate" />
    <result column="class_id" jdbcType="INTEGER" property="classId" />
    <result column="pressmark" jdbcType="INTEGER" property="pressmark" />
    <result column="state" jdbcType="SMALLINT" property="state" />
  </resultMap>
  <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.liantao.bookMS.entity.Book">
    <result column="introduction" jdbcType="LONGVARCHAR" property="introduction" />
  </resultMap>

對於text類型的映射是 jdbcType="LONGVARCHAR",普通類型處理則為VARCHAR,DATE,BIGINT之類的。

修改數據類型為varchar后的maper.xml應該為:

  <resultMap id="BaseResultMap" type="com.liantao.bookMS.entity.Book">
    <id column="book_id" jdbcType="BIGINT" property="bookId" />
    <result column="name" jdbcType="VARCHAR" property="name" />
    <result column="author" jdbcType="VARCHAR" property="author" />
    <result column="publish" jdbcType="VARCHAR" property="publish" />
    <result column="ISBN" jdbcType="VARCHAR" property="isbn" />
    <result column="language" jdbcType="VARCHAR" property="language" />
    <result column="price" jdbcType="DECIMAL" property="price" />
    <result column="pubdate" jdbcType="DATE" property="pubdate" />
    <result column="class_id" jdbcType="INTEGER" property="classId" />
    <result column="pressmark" jdbcType="INTEGER" property="pressmark" />
    <result column="state" jdbcType="SMALLINT" property="state" />
    <result column="introduction" jdbcType="VARCHAR" property="introduction" />
  </resultMap>

PS:我不知道為什么直接改不能生效,要改了數據庫在用mbg.java在生成一次才行,如有知曉請告知 3q

END


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM