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">

第二种方法是在配置中全局指定 CLOBObject 转换的类型处理程序。

<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 我上次检查时)。