首页 > 数据库技术 > 详细

mybatis存取oracle长数据clob方法

时间:2020-06-21 23:05:36      阅读:814      评论:0      收藏:0      [点我收藏+]

mybatis存取oracle长数据clob方法

1.重写mybatis的sql执行器

package com.ai.gridoperation;

import org.apache.ibatis.type.JdbcType;
import org.apache.ibatis.type.TypeHandler;

import java.sql.*;


/**
 * 解决保存数据字段超过4000 char 问题
 * @author yuans
 * @create 2020-06-02-14:38
 */
public class OracleClobTypeHandler implements TypeHandler<Object> {

    @Override
    public void setParameter(PreparedStatement ps, int i, Object parameter, JdbcType jdbcType) throws SQLException {
        Clob clob = ps.getConnection().createClob();
        clob.setString(1, (String) parameter);
        ps.setClob(i, clob);
    }

    @Override
    public Object getResult(ResultSet rs, String columnName) throws SQLException {
        Clob clob =  rs.getClob(columnName);
        return (clob == null || clob.length() == 0) ? null : clob.getSubString((long) 1, (int) clob.length());
    }

    @Override
    public Object getResult(ResultSet rs, int columnIndex) throws SQLException {
        return null;
    }

    @Override
    public Object getResult(CallableStatement cs, int columnIndex) throws SQLException {
        return null;
    }
}

2.保存使用

  INSERT INTO 
    GR_MICROGRID(example)
    VALUES(
      <if test=" shape !=null and shape !=‘‘ ">
           #{shape,typeHandler=com.ai.gridoperation.OracleClobTypeHandler}
      </if>)

3.查询使用

 <resultMap id="microFormatsBorderId" type="java.util.HashMap">
        <result  column="polygon" property="polygon" 		       typeHandler="com.ai.gridoperation.OracleClobTypeHandler"/>
 </resultMap>

 <select id="microFormatsBorderQuery" parameterType="java.util.Map" resultMap="microFormatsBorderId">
        select polygon from table
 </select>

mybatis存取oracle长数据clob方法

原文:https://www.cnblogs.com/ysit/p/13174253.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!