Mybatis sql mapper xml 是否可以将CLOB数据转换为String?
Is it possible to convert CLOB data to String in Mybatis sql mapper xml?
我想接收 CONTENT
列的 CLOB 数据作为 java.lang.String
值,只有 sql 映射器定义。
Select查询是这样的。
<select id="selectById">
<![CDATA[
SELECT
ID -- // NUMBER
, TITLE -- // VARCHAR2(2000)
, CONTENT -- // CLOB
FROM FAQ
WHERE ID = #{id}
]]>
</select>
可能吗?我用谷歌搜索了一个多小时,发现 <resultMap />
可能是解决方案。
但是,我想不通了。请帮助我。
我会告诉你两种方法。
第一个解决方案是使用<resultMap />
。
您只需为 CONTENT
列指定 javaType
。
<resultMap type="map" id="faqRM">
<id property="ID" column="ID" />
<result property="TITLE" column="TITLE" />
<result property="CONTENT" column="CONTENT" javaType="string" />
</resultMap>
并在 <select />
中指定 resultMap
。
<select id="selectById" resultMap="faqRM">
第二种方法是在配置中全局指定 CLOB
与 Object
转换的类型处理程序。
<typeHandlers>
<typeHandler javaType="java.lang.Object" jdbcType="CLOB"
handler="org.apache.ibatis.type.StringTypeHandler" />
</typeHandlers>
那么你可以简单地指定resultType="map"
而不是定义<resultMap />
。
<select id="selectById" resultType="map">
我还应该提到 java.lang.String
的容量比 CLOB
小(2GB - 1
vs 4GB - 1
我上次检查时)。
我想接收 CONTENT
列的 CLOB 数据作为 java.lang.String
值,只有 sql 映射器定义。
Select查询是这样的。
<select id="selectById">
<![CDATA[
SELECT
ID -- // NUMBER
, TITLE -- // VARCHAR2(2000)
, CONTENT -- // CLOB
FROM FAQ
WHERE ID = #{id}
]]>
</select>
可能吗?我用谷歌搜索了一个多小时,发现 <resultMap />
可能是解决方案。
但是,我想不通了。请帮助我。
我会告诉你两种方法。
第一个解决方案是使用<resultMap />
。
您只需为 CONTENT
列指定 javaType
。
<resultMap type="map" id="faqRM">
<id property="ID" column="ID" />
<result property="TITLE" column="TITLE" />
<result property="CONTENT" column="CONTENT" javaType="string" />
</resultMap>
并在 <select />
中指定 resultMap
。
<select id="selectById" resultMap="faqRM">
第二种方法是在配置中全局指定 CLOB
与 Object
转换的类型处理程序。
<typeHandlers>
<typeHandler javaType="java.lang.Object" jdbcType="CLOB"
handler="org.apache.ibatis.type.StringTypeHandler" />
</typeHandlers>
那么你可以简单地指定resultType="map"
而不是定义<resultMap />
。
<select id="selectById" resultType="map">
我还应该提到 java.lang.String
的容量比 CLOB
小(2GB - 1
vs 4GB - 1
我上次检查时)。