MyBatisで楽観ロックを実装する方法は何ですか。

MyBatisで楽観ロックを実現するには、該当するエンティティクラスにバージョン番号フィールドを追加し、対応する更新操作でこのバージョン番号フィールドを更新します。具体的な手順は以下の通りです。

  1. エンティティクラスにバージョン番号のフィールドを追加する、例えば:
public class User {
    private Long id;
    private String name;
    private Integer version;
    
    // getters and setters
}
  1. Mapperインターフェースに更新メソッドを追加し、SQLステートメントでバージョンフィールドを更新してください。例えば:
<update id="updateUser" parameterType="User">
    UPDATE user
    SET name = #{name}, version = version + 1
    WHERE id = #{id} AND version = #{version}
</update>
  1. サービス内で更新操作メソッドを呼び出す際に、元のバージョン番号を渡す必要があります。例:
public void updateUser(User user) {
    int rows = userMapper.updateUser(user);
    if (rows == 0) {
        throw new OptimisticLockException("更新失败,数据已被修改");
    }
}

MyBatisに楽観ロックを実装することができます。「更新操作中、バージョン番号が一致しない場合、更新操作は失敗し例外が発生します。」

bannerAds