遇到了使用mybatis向oracle数据库插入数据异常的问题,

具体的报错如下:org.springframework.jdbc.UncategorizedSQLException:
### Error updating database.  Cause: java.sql.SQLException: ORA-01461: 仅能绑定要插入 LONG 列的 LONG 值

mybatis的脚本如下:

<insert id="insertInfos" parameterType="java.util.List">
        INSERT INTO
        INFO(
        RECORD_ID,
        CONTENT
        )
        <foreach close=")" collection="list" item="item" index="index"
            open="(" separator="union">
            select
            #{item.recordId,jdbcType=VARCHAR},
            #{item.content,jdbcType=VARCHAR}
            from dual
        </foreach>
    </insert>

后面做了很多测试分析,确认是因为参数List过长,导致此问题,后面修改mybatis的脚本,

在最外层使用BEGIN、END包裹,然后使用foreach循环并在循环完成具体的数据库字段映射;

如下:

<insert id="insertInfos" parameterType="java.util.List">
        BEGIN
        <foreach close="" collection="list" item="item" index="index"
            open="" separator=";">
            INSERT INTO
            INFO(
            RECORD_ID,
            REQ_CONTENT
            )
            VALUES(
            #{item.recordId,jdbcType=VARCHAR},
            #{item.rspContent,jdbcType=VARCHAR}
            )
        </foreach>
        ;END;
    </insert>

注意在后面可以正确使用的脚本中,separator=";"  这里的分号不可以去掉的!

使用mybatis向oracle数据库插入数据异常的更多相关文章

  1. MyBatis在Oracle中插入数据并返回主键的问题解决

    引言:  在MyBatis中,希望在Oracle中插入数据之时,同一时候返回主键值,而非插入的条数... 环境:MyBatis 3.2 , Oracle. Spring 3.2   SQL Snipp ...

  2. 解决关于:Oracle数据库 插入数据中文乱码 显示问号???

    问题: oracle数据库,通过接口插入的中文数据乱码,中文变成了问号??? 解决方案: 计算机=>属性=>高级系统设置=>环境变量=>新建 变量名:NLS_LANG 值:SI ...

  3. Oracle数据库插入数据出错:ORA-06550

    wpf应用调用oracle的存储过程,出错“ORA-06550:参数个数或参数类型出错”,如下图: 反复检查,存储过程的参数个数和参数类型都没错,觉得非常蹊跷.最后终于解决, 原因是当参数的值为nul ...

  4. C# 读取Oracle数据库视图数据异常问题处理

    会出现类似现在这种提示的错误 System.Data.OracleClient 需要 Oracle 客户端软件 version 8.1.7 或更高版本 情况1.开发过程中遇到这种问题解决 由于.net ...

  5. 基于mybatis向oracle中插入数据的性能对比

    数据库表结构: 逐条插入sql语句: <insert id="insert" parameterType="com.Structure"> INSE ...

  6. mybatis使用序列批量插入数据

    mybatis只提供了单条数据的插入,要批量插入数据我们可以使用循环一条条的插入,但是这样做的效率太低下,每插入一条数据就需要提交一次,如果数据量几百上千甚至更多,插入性能往往不是我们能接受的,如下例 ...

  7. MyBatis操作Oracle批量插入 ORA-00933: SQL 命令未正确结束

    最近在使用MyBatis操作Oracle数据库的时候,进行批量插入数据,思路是封装一个List集合通过Myabtis 的foreach标签进行循环插入,可是搬照Mysql的批量插入会产生 异常 ### ...

  8. Oracle数据库用户数据完整备份与恢复

    使用PLSQL-Developer工具可以快速便捷地完成Oracle数据库用户.表的备份恢复. Oracle数据库用户数据完整备份与恢复 1. 备份 1.1   PL/SQL->工具->导 ...

  9. oracle数据库删除数据Delete语句和Truncate语句的对比

    oracle数据库删除数据Delete语句和Truncate语句的对比 当表中的数据不需要时,则应该删除该数据并释放所占用的空间,删除表中的数据可以使用Delete语句或者Truncate语句,下面分 ...

随机推荐

  1. 自行控制loadrunner的socket协议性能测试 (转)

    一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字符串转换为十六进制数据包 发送自己定义的数据包 接收数据包到自定义缓冲 ...

  2. Nginx Errors: upstream response cache error

    Nginx Errors upstream response cache error *2470578 an upstream response is buffered to a temporary ...

  3. Docker的Jenkins Pipeline工作流

    原文地址:http://www.youruncloud.com/blog/127.html 分享主题 一个软件产品的开发周期中,尤其是敏捷开发,持续集成和持续部署是必不可少的环节,而随着产品的丰富,模 ...

  4. 写入文件,创建xunlei批量任务

    [php] <?php $arr = array(); $arr[] = 'http://s1.dwstatic.com/group1/M00/83/4A/834a040953745f52e8a ...

  5. 错误: ISO C++ 不同意在类内初始化很量静态成员

    错误: ISO C++ 不同意在类内初始化很量静态成员      今天開始学C++ primer,在牵扯到Sales_item.h头文件时.出现了一些问题(和C++11新特性相关),当前的编译器版本号 ...

  6. Java客户端Jedis

    使用Jedis的Java客户端 maven依赖 <!-- jedis --> <dependency> <groupid>redis.clients</gro ...

  7. 设置一个label显示多种颜色,多种字体大小

    UILabel* label = [[UILabel alloc] init]; label.frame = CGRectMake(0, 100, 200, 100); label.textColor ...

  8. 使用MyBatis_Generator生成Dto、Dao、Mapping

    由于MyBatis属于一种半自动的ORM框架,所以主要的工作将是书写Mapping映射文件,但是由于手写映射文件很容易出错,所以查资料发现有现成的工具可以自动生成底层模型类.Dao接口类甚至Mappi ...

  9. vCenter初始化数据中心和集群

    接着上一次的文档"7.vCeenter部署流程2",vcenter软件已经安装在2008上了,同时win2008上的和vmware相关的服务都已经启动,这里一定要检查以下: 打开服 ...

  10. (C#)System.Security.SecureString(表示应保密的文本)

    正常的String类型值,在脱离开作用域之后,其值在内存中并不会被立即销毁,这时如果有人恶意扫描你的内存,程序中所保存的机密信息就会暴露;于是就有了System.Security.SecureStri ...