Mybatis -如何处理clob类型数据

Mybatis 处理clob类型数据

当执行sql语句,返回的是map类型时, 比如

public List<Map<String, Object>> query(@Param("sql") String sql)

得到的数据是List<Map>类型数据,此时,如果有返回的有clob字段时,数据是这样的oracle.sql.CLOB@63636de0 ,显然,这不是我想要的,我需要的是字符串数据

那么怎么来处理clob字段呢,很简单

就是定义类型处理器,来专门处理Clob字段,将Clob数据转换为字符串数据返回

@MappedJdbcTypes(JdbcType.CLOB)public class ClobTypeHandle extends BaseTypeHandler<Object> {    @Override    public void setNonNullParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType)            throws SQLException {        ps.setObject(i, parameter);    }    @Override    public Object getNullableResult(ResultSet rs, String columnName) throws SQLException {        return rs.getString(columnName);    }    @Override    public Object getNullableResult(ResultSet rs, int columnIndex) throws SQLException {        return rs.getString(columnIndex);    }    @Override    public Object getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {        return cs.getString(columnIndex);    }}

Mybatis 大字段clob处理1. 实体类View

package com.ttt.sysManager.po;public class View { private String VIEW_NAME; private String TEXT_LENGTH; private String TEXT;<span style="white-space:pre"> </span>// clob大字段 private String EDITIONING_VIEW; private String READ_ONLY;        // ...(get、set方法)}

2. Dao

List<View> getViewByPage(Map<String, Object> map);

3. XML

<resultMap id="viewResultMap" type="com.ttt.sysManager.po.View">             <result property="VIEW_NAME" column="VIEW_NAME"/>        <result property="TEXT_LENGTH" column="TEXT_LENGTH"/>          <result property="TEXT" column="TEXT" javaType="String" jdbcType="VARBINARY"/>          <result property="EDITIONING_VIEW" column="EDITIONING_VIEW" />          <result property="READ_ONLY" column="READ_ONLY" />  </resultMap>   <select id="getViewByPage" parameterType="map" resultMap="viewResultMap" > SELECT VIEW_NAME,TEXT_LENGTH,TEXT,EDITIONING_VIEW,READ_ONLY FROM (  SELECT A.*,  ROWNUM RN    FROM (SELECT * FROM user_views) A    WHERE ROWNUM <![CDATA[<=]]> #{endRow}  ) WHERE RN <![CDATA[>]]> #{startRow}</select>

4. 写入

写入大字段与普通写入无区别,但是数据库字段类型需为clob,如为blob会报错,暂不解决。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

天才就是这样,终身努力,便是天才。

Mybatis -如何处理clob类型数据

相关文章:

你感兴趣的文章:

标签云: