【问题标题】:Java Mybatis multiple update statementsJava Mybatis 多个更新语句
【发布时间】:2017-11-30 17:45:43
【问题描述】:

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

【问题讨论】:

标签: java mybatis ibatis


【解决方案1】:

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

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

我希望这能解决。

【讨论】:

    【解决方案2】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-22
      相关资源
      最近更新 更多