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

问题描述 投票:0回答:1

嗨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服务器版本对应的手册,以便在'附近使用正确的语法 更新部分在第2行设置sname ='trial3',sid = '90',优先级= 1,u'

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

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

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

java mybatis ibatis
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.