嗨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
有人可以告诉我哪里有错误
答案 0 :(得分:0)
您似乎正在尝试编写批量更新代码。你在这里做的不是批量更新。有了这个,你构建一个单独的SQL语句 - 可能是一个非常大的语句。有些数据库支持这种语法,有些则不支持。如果您设置separator=";"
,则可能会有效。
使用MyBatis内置的批处理操作支持要好得多。请查看此页面了解详情:https://github.com/mybatis/mybatis-3/wiki/FAQ#how-do-i-code-a-batch-insert