MyBatisでトランザクションを処理する方法は何ですか?
MyBatisでトランザクションを処理する方法は2つあります。
- MyBatisのSqlSessionオブジェクトを取得し、beginTransaction()、commit()、rollback()などのメソッドを呼び出すことで、トランザクションのコミットやロールバックを制御します。
SqlSession sqlSession = sqlSessionFactory.openSession();
try {
    // 开启事务
    sqlSession.beginTransaction();
    
    // 执行业务逻辑
    
    // 提交事务
    sqlSession.commit();
} catch (Exception e) {
    // 回滚事务
    sqlSession.rollback();
} finally {
    sqlSession.close();
}
- マッパーインターフェースのメソッドには、@Transactionアノテーションを使用したり、XML構成ファイルでトランザクションの伝播動作や分離レベルを設定することができます。
@Mapper
public interface UserMapper {
    @Insert("insert into user(name, age) values(#{name}, #{age})")
    @Transactional
    void insert(User user);
}
XMLファイルで設定することもできます。
<transactionManager type="JDBC" />
<mappers>
    <mapper resource="UserMapper.xml" />
</mappers>
開発者のニーズや習慣によって、どの方法を使うかが決まります。
 
    