INSERT INTO `user` (ユーザー名) 価値観"/> INSERT INTO `user` (ユーザー名) 価値観">

mybaits一括挿入の操作方法

PHP中文网
PHP中文网オリジナル
2017-06-21 16:04:121319ブラウズ

バッチで挿入するときは、挿入されたデータの 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。