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
答案 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;
我希望这会解决。