Mybatis自動生成的Xml文件,text數據類型會默認產生XXWithBlobs的方法,用以獲取含有該類型的數據
- 所以,讀取含有text類型的數據的時候,應該使用XXWithBlobs的方法,否則會獲取到空值
- 其次,只能修改數據類型了,改用varchar了
以下是MyBatis對於數據類型映射的操作解析
- 如下,可以看到
MyBatis
對於類型的處理:
表數據,其中introduction
為text
類型數據
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