問題が発生しました: mybaties を使用してデータベースにデータを挿入します。挿入は成功したことが示されていますが、データベース内のデータは変更されていませんか?

問題が発生しました: mybaties を使用してデータベースにデータを挿入します。挿入は成功したことが示されていますが、データベース内のデータは変更されていませんか?

考えられる理由はいくつかあります。

  1. トランザクションがコミットされていません: MyBatis をデータベース操作に使用する場合、トランザクションを手動で送信する必要があります。データの挿入が完了した後、メソッドを呼び出してトランザクションをコミットできます commit() 。トランザクションがコミットされていない場合、データベース内のデータは実際には保存されません。

  2. 構成の問題: データベース接続が正しく構成されており、正しいデータベースに接続されていることを確認してください。設定ファイル内のデータベースのURL、ユーザー名、パスワードなどが正しいかどうかを確認できます。

  3. SQL ステートメント エラー: 挿入ステートメントが正しいかどうかを確認してください。構文エラーまたはデータ型の不一致により、挿入が失敗する可能性があります。同じ SQL ステートメントを手動で実行して確認してください。

  4. データベースの自動コミット設定: 一部のデータベースはデフォルトで自動コミットされます。つまり、SQL ステートメントが実行されるたびに変更が自動的にデータベースに保存されます。データベースが自動コミット モードにある場合は、他のコードがデータを変更したが、時間内に送信されなかったため、目に見える変化が生じなかった可能性があります。

  5. データベース トランザクション分離レベル: トランザクションを有効にして挿入操作を実行すると、トランザクション分離レベルが原因である可能性があります。トランザクション分離レベルを READ_COMMITTED に設定するか、トランザクションを無効にして、データが正常に挿入できるかどうかを確認してください。

上記のヒントが問題の発見と解決に役立つことを願っています。問題が解決しない場合は、問題の解決に役立つ詳細とコードを提供してください。

初回タイムコード:

public class InsertDataTest {
    public static void main(String[] args) {
        Emp emp =new Emp("102","王二浪","男",29,"23232323232323","武当山","2000-10-20");
        MyBatisUtil util = new MyBatisUtil();
        SqlSession sqlSession = util.getSqlSession();
        int insertData = sqlSession.insert("insertData", emp);

        System.out.println(insertData);
        
    }
}

結果:

コンソールの結果出力には問題なく、トレンドも出力され期待通りの効果が得られていますが、データベースに戻るとデータが送信されていません。以下に示すように設定したため、オンになっています。トランザクションについては、送信されていないため、トランザクションは送信されません。

 <!--
                transactionManager 事务管理器
                type的值有JDBC和MANAGED
                    JDBC – 这个配置直接使用了 JDBC 的提交和回滚设施,它依赖从数据源获得的连接来管理事务作用域,
                    也就是给我们来手动管理事务的提交。
            -->
            <transactionManager type="JDBC"/>

正しいコード:

public class InsertDataTest {
    public static void main(String[] args) {
        Emp emp =new Emp("102","王二浪","男",29,"23232323232323","武当山","2000-10-20");
        MyBatisUtil util = new MyBatisUtil();
        SqlSession sqlSession = util.getSqlSession();
        int insertData = sqlSession.insert("insertData", emp);

        System.out.println(insertData);
        if (sqlSession != null) {
            sqlSession.commit();
            sqlSession.close();
        }
    }
}

おすすめ

転載: blog.csdn.net/m0_64231944/article/details/132844478