关于oracle驱动jiar包版本问题导致的ORA-01460【mybatis+Oracle】

遇到一个问题,利用mybatis传Clob字段,超过一定长度就报ORA-01460,【java对应String,oracle对应Clob】

开始的写法:select * from package_pro.get_proids(to_clob(#{proIds}), to_date(#{upDate},'yyyy-MM-dd'))

然后一次proids的长度为8千多,就出现了ORA-01460,然后照着网上的做法,

     (1)mybatis指定jdbcType  【#{proIds, jdbcType=CLOB}】,失败,没效果

      (2)mybatis指定自定义TypeHandler,实现BaseTypeHandler<T>,然后在mybatis配置#{proids, t                                 ypeHandler=cn.com.mybatis.test.DateTypeHandler},传值是进去了自定义的DateTypeHandler,但还是失败,没效果

      (3)更换新版的oracle驱动jar包,问题解决【原先:ojdbc6】

      (4)将过长的proids按一定长度分割为list,再在mybatis  foreach遍历,

            【此处将String proids按2000长度分割为list,proids.length<2000 list.size() =1,】

            mapper.xml

           select * from package_pro.get_proids(

            <foreach collection="proIdsList" item="item" index="index">
            <choose>
                <when test="index != (proIdsList.size() - 1)">
                    to_clob(#{item})||    
                </when>
                <otherwise>
                    to_clob(#{item})
                </otherwise>
            </choose>
         </foreach>

          to_date(#{upDate},'yyyy-MM-dd'))  

           问题解决

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值