mybatisでの一括追加、削除、変更
1886 ワード
現在、多くの会社や個人がmybatisフレームワークを使用していますが、mybatisフレームワークはormフレームワークなので、データベースのinsert、update、deleteは必須ですが、パフォーマンスの問題があります.
そういえば、mybatisを使用して一括削除一括追加を行うときにプログラムでforループを使用してメソッドを呼び出す人がいるのを見て、間違いありませんが、性能は少し低いので、以下にいくつかの一括処理の例を見て、直接プログラムでforループを呼び出すよりも効率的です.
1、一括追加:
2、一括修正:
3、一括削除:
このような一括挿入,修正,削除の方式がプログラム中のforループ呼び出しより速いのは,(1),ネットワーク間で伝達されるデータ量が少なく,もちろん伝達時間が少なくなるためである.(2)、データベースサービスを要求する回数が少なく、データベースサービスを接続するのに時間がかかるため(データベース接続プールを出た).(3)、mybatisは実行時にConnectionを取得するので、statementオブジェクトはループが少なく多くのオブジェクトを作成したとは思いません.
(4)、mybatisの実行方法は3つあります.SIMPLE、REUSE、BATCHの3つです.もしよろしければ、SIMPLEを使用して実行するたびにStatementオブジェクトを作成して実行し、REUSEを使用すれば preparedStatementオブジェクトを繰り返し使用して実行し、BATCHは一括実行であり、mybatisはデフォルトでSIMPLE方式で実行するので、少なくともREUSEであるべきかどうかに注意してください. 実行方法.
そういえば、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であるべきかどうかに注意してください. 実行方法.