mybatis怎么读写oracle 中long类型的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis怎么读写oracle 中long类型的数据相关的知识,希望对你有一定的参考价值。

参考技术A InputStream is = rs.getBinaryStream("kppic");
File file = new File("D:/e.bmp");
OutputStream os = new FileOutputStream(file);
byte [] bt = new byte[1024];
int len;
while ((len = is.read(bt)) != -1)
os.write(bt, 0, len);

os.close();
is.close();本回答被提问者和网友采纳

Spring+Mybatis类型转换的问题,oracle数据库中有一个clob类型,怎样在查询以后转换为String类型?

我在mapper文件里返回的不是实体类,而是一个Map类型,所以无法自动转换,我在配置文件中配置类型转换没有作用:
<typeHandlers>
<typeHandler javaType="String" jdbcType="CLOB" handler="org.apache.ibatis.type.ClobTypeHandler"/>
</typeHandlers>
有大神们能指点一下吗

首先你的思路就错的,不可能转换成string

    把大对象读进byte[]

     

public byte[] function(Connection connection,所需参数) throws EMPException
  
  PreparedStatement ps = null;
  ResultSet rs = null;
  byte[] data = null;
  try
   .....省略
   while (rs.next())
    oracle.sql.CLOB  clob= (oracle.sql.CLOB) rs.getClob("大对象的字段名");
    InputStream inStream =clob.getBinaryStream();
    long nLen = clob.length();
                int nSize = (int) nLen;
                data = new byte[nSize];
                inStream.read(data);
                inStream.close();
                connection.commit();

   
   catch (SQLException e)
   EMPLog.log(this.getClass().getName(), EMPLog.INFO, 0, e.toString());
   catch (IOException e)
   // TODO Auto-generated catch block
   e.printStackTrace();
   finally
   try
    if (rs != null)
     rs.close();
     rs = null;
    
    if (ps != null)
     ps.close();
     ps = null;
    
    catch (SQLException e)
    EMPLog.log(this.getClass().getName(), EMPLog.INFO, 0, e
      .toString());
   
  
  return data;
 

2.直接在页面上将对象读到页面上

<form action="">
<%
    
    response.setContentType("image/jpg");
    response.setHeader("Content-Transfer-Encoding","base64");
    ServletOutputStream toClient = response.getOutputStream();
            out.clear();
            out = pageContext.pushBody();
            ByteArrayInputStream in = new ByteArrayInputStream(data); 
            int len;
            byte[] buf = new byte[1024];
            while ((len = in.read(buf, 0, 1024)) != -1)
             toClient.write(buf, 0, len);
           
            toClient.flush();
            toClient.close();
        %>
        </form>

参考技术A 默认Clob是会转成byte[] ,你可以在用的时候转成String

以上是关于mybatis怎么读写oracle 中long类型的数据的主要内容,如果未能解决你的问题,请参考以下文章

java mybatis对oracle long解决办法?

工作经验:mybatis 处理 oracle Long 类型

解决:oracle+myBatis ResultMap 类型为 map 时,表字段类型有 Long/Blob/Clob 时报错

Spring+Mybatis类型转换的问题,oracle数据库中有一个clob类型,怎样在查询以后转换为String类型?

插入oracle的long类型,报字符串过长怎么解决

关于mybatis3.0处理long字段的问题