mybatis一括更新時sql文は問題ないがbad SQL grammar[]エラーを報告
3210 ワード
ネット上ではmybaitisの一括更新の実現に約2つの方法が提供されている.1つはsqlを用いたcase構文である.もう1つは、毎回1つしか更新されませんがforeach文で組み立てられています.私が使っているのは2つ目です.mybatisの文は大体次の通りです.
一度に複数のsql文が更新され、各文はセミコロンで区切られます.以上mybatisからsqlに翻訳すると、大体次のようになります.
しかし、テストを行うたびに、データベースを更新するたびに次のようなエラーが発生します.
しかし、sql文をnavicatに単独で置くことは成功したが、データベースに接続するときにallowMultiQueries=trueという文が少なくなったことが分かった.この文では、複数のsql文を一度にコミットできます.特にセミコロン;完全なデータベース接続urlは、jdbc:mysql://localhost:3306/zkw_web?useUnicode=true&characterEncoding=utf8 &allowMultiQueries=true
"setWeiboEmotionByList" parameterType="java.util.List">
"list" item="item" open="" close="" separator=";">
UPDATE weibo_content
SET
EMOTION = #{item.emotion}
WHERE
WEIBO_ID = #{item.weibo_id}
一度に複数のsql文が更新され、各文はセミコロンで区切られます.以上mybatisからsqlに翻訳すると、大体次のようになります.
UPDATE weibo_content
SET
EMOTION = 1
WHERE
WEIBO_ID = 1;
UPDATE weibo_content
SET
EMOTION = 0
WHERE
WEIBO_ID = 2;
しかし、テストを行うたびに、データベースを更新するたびに次のようなエラーが発生します.
Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE weibo_content
SET
EMOTION = 0.0
W' at line 7
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'UPDATE weibo_content
しかし、sql文をnavicatに単独で置くことは成功したが、データベースに接続するときにallowMultiQueries=trueという文が少なくなったことが分かった.この文では、複数のsql文を一度にコミットできます.特にセミコロン;完全なデータベース接続urlは、jdbc:mysql://localhost:3306/zkw_web?useUnicode=true&characterEncoding=utf8 &allowMultiQueries=true