INSERT INTO `user` (ユーザー名) 価値観"/> INSERT INTO `user` (ユーザー名) 価値観">
バッチで挿入するときは、挿入されたデータの ID を取得する必要があります。
次のように:
<insert id="insertUser" parameterType="gys.entity.User" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user` (userName) VALUES (#{userName})</insert>
これは問題ありません。
しかし、場合によっては、バッチ挿入と挿入された ID の取得が必要になることがあります
次のように書きます:
<insert id="insertUserBatch1" keyProperty="userId" useGeneratedKeys="true">INSERT INTO `user` (userName) VALUES<foreach collection="list" separator="," item="item">(#{item.userName})</foreach></insert>
このように実行すると例外が発生します。
これは、使用している mybatis のバージョンが低すぎるためです。たとえば、私はバージョン 3.2.2 を使用していますが、これは mybatis のバグです。
バージョン 3.4.4 では問題ありません。
上記の SQL ステートメントを別の方法で記述すると、再度例外が報告されます (insert を foreach で囲みます)
例:
<insert id="insertUserBatch2"> <foreach collection="list" separator=";" item="item"> INSERT INTO `user` (userName) VALUES (#{item.userName}) </foreach></insert>
同様に、更新のバッチ更新もあります。 この問題
<update id="updateUserBatch"><foreach collection="list" item="item" separator=";">update `user` set userName=#{item.userName} where userId=#{item.userId}</foreach></update>
これは、mybatis がデフォルトで 1 つの SQL ステートメントしか実行できないためです
複数の SQL ステートメントを実行するには、パスをリンクするときにパラメーターを追加できます。
以上がmybaits一括挿入の操作方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。