更新操作在MYBATIS中无法正常工作并出现错误

时间:2018-02-28 13:08:13

标签: java mybatis ibatis

嗨Iam尝试在MyBATIS中进行更新操作,但是我得到了SQL语法错误异常,我无法理解我在哪里做错了有人建议我

Temp.java
public class Temp{
private int id;
private String name;
private List<Sect> sect;
//setters and getters
}

Sect.java
Public class Sect{
private int id;
private int sid;
private String sname;
private String priority;
//setters and getters
}

我的Sect的数据库表结构是

sid     sname    priority  id

现在我想一次更新Sect表中的多行,我写的DAO查询是:

<update id="updateSects" 
parameterType="com.****.****.****.Temp"> 
<foreach item="element" collection="sect" separator=",">   
Update sect set sid=#{element.sid},sname=#
{element.sname},priority=#{element.priority} WHERE 
id=#{element.id}
</foreach>;
</update> 

但是我得到的错误如下:     ###原因:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:你     您的SQL语法有错误;查看与您的手册相对应的手册     MySQL服务器版本,用于在'左右'附近使用正确的语法     更新部分设置sname ='trial3',sid = '90',优先级= 1,u'在第2行

在我的Java服务中,我将我的dao.xml称为:

Service.java
public void updateSects(Temp temp) throws exception

有人可以告诉我哪里有错误

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试编写批量更新代码。你在这里做的不是批量更新。有了这个,你构建一个单独的SQL语句 - 可能是一个非常大的语句。有些数据库支持这种语法,有些则不支持。如果您设置separator=";",则可能会有效。

使用MyBatis内置的批处理操作支持要好得多。请查看此页面了解详情:https://github.com/mybatis/mybatis-3/wiki/FAQ#how-do-i-code-a-batch-insert