Mybatis 批量更新 ORA-00911: 无效字符的错误
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis 批量更新 ORA-00911: 无效字符的错误相关的知识,希望对你有一定的参考价值。
参考技术A使用<foreach></foreach> 批量insert时报错 ORA-00911: 无效字符的错误
Mybatis 会打印的sql语句如下,并且报错
上述语句是合法的SQL语句,并且放到SQL工具中可以执行。 错误的原因是Mybatis不能识别这是批量操作的2条语句,紧靠;号不能完成
解决办法: 增加foreach节点的操作符
foreach加入open和close配置
新打印的SQL将会如下所示:
mybatis批量更新
mybatis批量更新
以前做的东西,怕忘了随手做一个记录
首先在配置数据库连接字符串后面加上
&allowMultiQueries=true
我的完整的是这样的 jdbc:mysql://192.168.1.200:3306/huasheng?characterEncoding=utf-8&allowMultiQueries=true
Controller层把一个JSON字符串转换成list集合
@RequestMapping(value = "/update")
public@ResponseBody DataMess update(String data){
DataMess dm=new DataMess();
List<Torderdetail> list = new ArrayList<Torderdetail>();
try {
JSONArray obj=JSONObject.parseArray(data);
Iterator<Object>jos = obj.iterator();
while(jos.hasNext()){
JSONObject oj=(JSONObject) jos.next();
Torderdetail orderdetail = new Torderdetail();
orderdetail.setGoodsid(Integer.parseInt(oj.get("goodsid").toString()));
orderdetail.setGoodsnumber(Integer.parseInt(oj.get("goodsnumber").toString()));
list.add(orderdetail);
}
orderDetailService.update(list);
dm.setSuccess(true);
} catch (Exception e) {
dm.setMessage("失败");
dm.setSuccess(false);
LogUtil.doErr("修改出错");
}
return dm;
}
配置文件我是这样写的 (Oracle好像不太一样,这只是mysql的配置)
<update id="update" parameterType="java.util.List">
<foreach collection="list" item="item" index="index" open="" close="" separator=";">
update tb_orderdetail
<set>
goodsnumber=${item.goodsnumber}
</set>
where orderdetailid = ${item.goodsid} and orderId = 0
</foreach>
</update>
以上是关于Mybatis 批量更新 ORA-00911: 无效字符的错误的主要内容,如果未能解决你的问题,请参考以下文章
ORA-00911: 无效字符 00911. 00000 - Oracle 中出现“无效字符”异常错误
oracle: sql语句报ora-01461/ora-00911错误