Java Mybatis多个更新语句

时间:2015-10-27 15:49:59

标签: java mybatis ibatis

Java Mybatis Oracle

我在xml文件中跟随mybatis语句

<update id="updateOfferIndex" parameterType="java.util.List">
   <foreach collection="list" item="offer"  index="index"  separator=";" >
        UPDATE  offer set indx=#{offer.idx} WHERE id=#{offer.eId}
    </foreach>

我收到以下错误,有人可以帮忙吗?

### Error updating database.  Cause: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

### The error may involve com.dao.linear.upsell.LinearUpsellDao.updateOfferIndex-Inline
### The error occurred while setting parameters
### SQL: UPDATE  offer set indx=? WHERE id=?   ;       UPDATE  offer set indx=? WHERE id=?
### Cause: java.sql.SQLSyntaxErrorException: ORA-00911: invalid character

2 个答案:

答案 0 :(得分:1)

看起来没有附加最后一个分号:

    ### SQL: UPDATE  offer set indx=? WHERE id=?;       
    UPDATE  offer set indx=? WHERE id=?;

这与关于foreach分隔符的mybatis documentation是一致的:

  

元素很聪明,因为它不会意外地附加额外的元素   分隔符。

尝试在XML映射中添加分号:

  <foreach collection="list" item="offer"  index="index"  separator=";" >
        UPDATE  offer set indx=#{offer.idx} WHERE id=#{offer.eId}
  </foreach>
  ;

答案 1 :(得分:1)

我通过以这种方式插入BEGIN-END语句来解析:

BEGIN
<foreach collection="list" item="offer"  index="index"  separator=";" >
        UPDATE  offer set indx=#{offer.idx} WHERE id=#{offer.eId}
</foreach>;
END;

我希望这会解决。