Mybatis-clob 형식 데 이 터 를 어떻게 처리 합 니까?

3074 단어 Mybatisclob데이터
Mybatis 처리 clob 형식 데이터
sql 문 구 를 실행 할 때 map 형식 을 되 돌려 줍 니 다.예 를 들 어

public List<Map<String, Object>> query(@Param("sql") String sql)
얻 은 데 이 터 는 List형식 데이터 입 니 다.이때 clob 필드 가 있 을 때 데 이 터 는 이러한 Oacle.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.실체 클래스 보기

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 에 잘못 보고 할 수 있 으 면 해결 되 지 않 습 니 다.
이상 은 개인 적 인 경험 이 므 로 여러분 에 게 참고 가 되 기 를 바 랍 니 다.여러분 들 도 저 희 를 많이 응원 해 주시 기 바 랍 니 다.

좋은 웹페이지 즐겨찾기