zoukankan      html  css  js  c++  java
  • 工作经验:mybatis 处理 oracle Long 类型

    前言:mybatis 接收 oracle 中 LONG 类型的,报错:无效的列类型: getCLOB not implemented for class oracle.jdbc.driver.T4CLongAccessor

    注意

      当表中有 long 类型的字段存在时,查询多条数据(列表)时能不查这个字段就不查这个字段。因为查了这个字段会影响速度。

    情况

      oracle 表中有个字段为 LONG 类型,LONG 数据类型中存储的是可变长字符串,最大长度限制是2GB。(具体详解可以百度)

      由于数据库中的这张表是别的地方提供的,不能修改,只能查询,所以不能修改 oracle 表中这个字段的类型。

      所以只能处理当前问题。当前问题如下:java 实体使用 String 类型接ItemE,mybatis sql 中使用 resultMap 形式,sql resultMap 如下

    <resultMap extends="BaseResultMap" id="ResultMapWithBLOBs" type="com.yule.demo">
            <result column="ITEM_E" property="itemE" jdbcType="LONGVARCHAR"/>
        </resultMap>

      然后查询 sql 报错:

    解决方案

      将 sql 中的 LONGVARCHAR 改为 LONGVARBINARY 即可。

    <result column="ITEM_E" property="itemE" jdbcType="LONGVARBINARY"/>

     补充(转http://blog.csdn.net/loongshawn/article/details/50496460

    Mybatis JdbcType与Oracle、MySql数据类型对应列表

    MybatisJdbcTypeOracleMySql
    JdbcType ARRAY    
    JdbcType BIGINT   BIGINT
    JdbcType BINARY    
    JdbcType BIT   BIT
    JdbcType BLOB BLOB BLOB
    JdbcType BOOLEAN    
    JdbcType CHAR CHAR CHAR
    JdbcType CLOB CLOB TEXT
    JdbcType CURSOR    
    JdbcType DATE DATE DATE
    JdbcType DECIMAL DECIMAL DECIMAL
    JdbcType DOUBLE NUMBER DOUBLE
    JdbcType FLOAT FLOAT FLOAT
    JdbcType INTEGER INTEGER INTEGER
    JdbcType LONGVARBINARY    
    JdbcType LONGVARCHAR LONG VARCHAR  
    JdbcType NCHAR NCHAR  
    JdbcType NCLOB NCLOB  
    JdbcType NULL    
    JdbcType NUMERIC NUMERIC/NUMBER NUMERIC/
    JdbcType NVARCHAR    
    JdbcType OTHER    
    JdbcType REAL REAL REAL
    JdbcType SMALLINT SMALLINT SMALLINT
    JdbcType STRUCT    
    JdbcType TIME   TIME
    JdbcType TIMESTAMP TIMESTAMP TIMESTAMP/DATETIME
    JdbcType TINYINT   TINYINT
    JdbcType UNDEFINED    
    JdbcType VARBINARY    
    JdbcType VARCHAR VARCHAR VARCHAR

    注意到, MyBatis的JdbcType中部分没有对应到Oracle和Mysql的数据类型中(或许由于自己遗漏),不过不用担心,后续大家碰到再具体分析;同时上述对应关系不一定是一一对应,请大家了解。

    大家主要掌握基本的数字、时间、字符串就足以应对日常开发了。

      

  • 相关阅读:
    康拓展开
    P6032 选择客栈 加强版 递推
    0923考试T3 二进制,位运算
    0922考试T3 dfs序 lca 线段树 树上问题
    0921考试T2
    0922考试T1
    P3934 [Ynoi2016]炸脖龙I 树状数组 扩展欧拉定理
    0922考试T4 区间DP
    P6834 [Cnoi2020]梦原 树状数组 期望DP
    UVA1364 Knights of the Round Table Tarjan求点双联通分量+二分图染色
  • 原文地址:https://www.cnblogs.com/yuxiaole/p/9267399.html
Copyright © 2011-2022 走看看