qq_24534807 2017-07-25 08:10 采纳率: 0%
浏览 1677

ibatis 批量插入!!!!?????

获得map

        String insertCompId = "a,b,c";
        String ttId = "a,b,c";
        String ticketCode = "a";

    String[] insertCompIdaa = insertCompId.split(",");
        String[] ttidaa = ttId.split(",");

        try{
            sqlMapClient.startTransaction();
            Map map = new HashMap();

            List<TestInsert> tilist = new ArrayList<TestInsert>();

            for (int i = 0; i < ttidaa.length; i++) {
                for (int j = 0; j < insertCompIdaa.length; j++) {
                    TestInsert ti =new TestInsert();
                    ti.setTicketTypeId(ttidaa[i]);
                    ti.setTicketCodeType(ticketCode);
                    ti.setComponentId(insertCompIdaa[j]);
                    tilist.add(ti);
                }
            }
            map.put("tilist", tilist);
            .........

将上面得到的map,传入

 <insert id="testInsertTicketCodeRelation" parameterClass="java.util.Map" >
        insert all
        <iterate property="tilist" conjunction=",">
        into TICKET_TYPE_TICKET_CODE
            (
            TICKET_TYPE_TICKET_CODE_ID,
            TICKET_TYPE_ID,
            TICKET_CODE_TYPE,
            COMPONENT_ID
            )
            values
            (
            TICKET_TYPE_AND_CODE_ID_SEQ.nextVal,
            #tilist[].ticketTypeId#,
            #tilist[].ticketCodeType#,
            #tilist[].componentId#
            )
        </iterate>
        select * from dual
    </insert>

出错(当ttId和insertCompId为单字符,例如ttId=“a”insertCompId=“b”,这样的,是不会报错,只有为上面的有逗号的字符串时,才会出现这个错误)

 ERROR [http-bio-8080-exec-4] LoggerFactory.invoke(38) | class com.hkt.engineering.oneoss.ticketing.dao.tickettype.impl.TicketTypeTicketCodeDAO.testInsertTicketCodeRelation() invoke error
ERROR [http-bio-8080-exec-4] LoggerFactory.invoke(39) | error info: 
com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred while applying a parameter map.  
--- Check the EFT_TICKET_TYPE_TICKET_CODE.testInsertTicketCodeRelation-InlineParameterMap.  
--- Check the statement (update failed).  
--- Cause: java.sql.SQLException: ORA-00928: 缺失 SELECT 关键字

请问,问题出在哪里了?

  • 写回答

1条回答 默认 最新

  • 丵鹰 2017-07-25 08:40
    关注

    应该是这样的吧

     <insert id="testInsertTicketCodeRelation" parameterClass="java.util.Map" >
            insert into TICKET_TYPE_TICKET_CODE
                (
                TICKET_TYPE_TICKET_CODE_ID,
                TICKET_TYPE_ID,
                TICKET_CODE_TYPE,
                COMPONENT_ID
                )
                values
            <iterate property="tilist" conjunction=",">
                (
                TICKET_TYPE_AND_CODE_ID_SEQ.nextVal,
                #tilist[].ticketTypeId#,
                #tilist[].ticketCodeType#,
                #tilist[].componentId#
                )
            </iterate>
    
        </insert>
    
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?