mybatisでの一括追加、削除、変更

1886 ワード

現在、多くの会社や個人がmybatisフレームワークを使用していますが、mybatisフレームワークはormフレームワークなので、データベースのinsert、update、deleteは必須ですが、パフォーマンスの問題があります.
そういえば、mybatisを使用して一括削除一括追加を行うときにプログラムでforループを使用してメソッドを呼び出す人がいるのを見て、間違いありませんが、性能は少し低いので、以下にいくつかの一括処理の例を見て、直接プログラムでforループを呼び出すよりも効率的です.
1、一括追加:
<insert id="batchInsert" parameterType="java.util.List">
    INSERT INTO STUDENT (id,name,sex,tel,address)
    VALUES 
    <foreach collection="list" item="item" index="index" separator="," >
        (#{item.id},#{item.name},#{item.sex},#{item.tel},#{item.address})
    </foreach>
</insert>

2、一括修正:
<update id="batchUpdate" parameterType="java.util.List">
    UPDATE STUDENT SET name = "250" WHERE id IN
    <foreach collection="list" item="item" index="index" open="(" separator="," close=")" >
        #{item}
    </foreach>
</update>

3、一括削除:
<delete id="batchDelete" parameterType="java.util.List">
    DELETE FROM STUDENT WHERE id IN
    <foreach collection="list" index="index" item="item" open="(" separator="," close=")"> 
        #{item} 
    </foreach>
</delete>

このような一括挿入,修正,削除の方式がプログラム中のforループ呼び出しより速いのは,(1),ネットワーク間で伝達されるデータ量が少なく,もちろん伝達時間が少なくなるためである.(2)、データベースサービスを要求する回数が少なく、データベースサービスを接続するのに時間がかかるため(データベース接続プールを出た).(3)、mybatisは実行時にConnectionを取得するので、statementオブジェクトはループが少なく多くのオブジェクトを作成したとは思いません.
(4)、mybatisの実行方法は3つあります.SIMPLE、REUSE、BATCHの3つです.もしよろしければ、SIMPLEを使用して実行するたびにStatementオブジェクトを作成して実行し、REUSEを使用すれば  preparedStatementオブジェクトを繰り返し使用して実行し、BATCHは一括実行であり、mybatisはデフォルトでSIMPLE方式で実行するので、少なくともREUSEであるべきかどうかに注意してください.  実行方法.