zoukankan      html  css  js  c++  java
  • ibatis使用iterate实现批量插入insert正确写法

    由于想批量入库提升效率,最近实现了ibatis的批量插入,结果一直报错 :StringIndexOutOfBoundsException ,原来是value中的格式不正确。

    本人邮箱:techqu@163.com,欢迎讨论

    正确写法示例:

    RecieveDataRecordsDao

       public long iterate_insert(List<RecieveDataRecordsDB> db) {
            Object obj = getSqlMapClientTemplate().insert("iterate_insert", db);
            if (obj == null) { return 0; }
    
            return (Long) obj;
        }
    mapper.xml
    
    <insert  id ="iterate_insert"   parameterClass ="java.util.List">
    
    insert into recieve_data_records (trader_serial_id,phone_num,data_volume,timestamp,lasttime,errorcount,errordesc,errorchannel,type,operator,provinceId,appid) values      
    
          <iterate  conjunction =","  >
         (#db[].trader_serial_id:VARCHAR#,#db[].phone_num:BIGINT#,#db[].data_volume:BIGINT#,#db[].timestamp:BIGINT#,#db[].lasttime:BIGINT#,#db[].errorcount:INTEGER#,#db[].errordesc:VARCHAR#,#db[].errorchannel:INTEGER#,#db[].type:INTEGER#,#db[].operator:INTEGER#,#db[].provinceid:VARCHAR#,#db[].appid:VARCHAR#)         
          </iterate>
    
    </insert>

    --------------------- 

    注意事项:
    1. value内的值,必须按照 #传入参数名[].属性名:类型 这个格式写。否则会报 StringIndexOutOfBoundsException 异常。方括号将参数标记为List,否则解析器会简单的将List输出成String。我检查半天才发现原来是格式不正确引起的
    2. 如果传入的参数类型是List,则不需要在iterate上写property属性
    ---------------------

  • 相关阅读:
    Sparrow 开发板化身电脑音量调节器
    我的第一台台式机
    DFRobot万物互联大赛第二轮
    DFRobot万物互联大赛第一轮
    RPi Cam v2 之一:基础及牛刀小试
    Galileo Gen2 之MQTT通讯
    路飞学城Python爬虫课第一章笔记
    Micro:Bit手柄试用之一MagicPad (解决蓝牙与gamePad包共存)
    PocketBeagle 初高级设置
    EVB-P6UL:一识庐山真面目
  • 原文地址:https://www.cnblogs.com/weixupeng/p/9903953.html
Copyright © 2011-2022 走看看