データベース操作のインフラが完成したら、実際にJDBCデータ操作を実行します。関連するデータベース テーブルの ER 図は次のとおりです。
上の図に示すように、最初のステップは t_user テーブルにレコードを追加することです。ユーザー登録には複数のテーブルを操作する必要があるため、トランザクションを使用する必要があります。まず、簡単な JDBC ベースのトランザクション フレームワークを作成します。コードは次のとおりです。
@Override public long registerUser(Map<String, Object> userInfo) { Connection conn = null; long userId = 0; try { conn = JdbcDs.getConnection(); conn.setAutoCommit(false); userId = addUser(conn, userInfo); if (userId <= 0) { throw new SQLException("Fail to add user in t_user"); } conn.commit(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); try { conn.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } userId = -1; } finally { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return userId; }
次に、具体的なユーザーの追加操作は次のとおりです。
private long addUser(Connection conn, Map<String, Object> userInfo) { long userId = -1; PreparedStatement stmt = null; ResultSet rst = null; String sql = "insert into t_user(user_name, user_group_id, user_level_id) values(?, 2, 1)"; try { stmt = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); stmt.setString(1, (String)userInfo.get("userName")); int affectedNum = stmt.executeUpdate(); if (1 == affectedNum) { rst = stmt.getGeneratedKeys(); if (rst.next()) { userId = rst.getLong(1); } } else { userId = -1; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); userId = -1; } finally { try { if (rst != null) { rst.close(); } if (stmt != null) { stmt.close(); } } catch (Exception ex) { } } return userId; }
返された userId が 0 より大きい場合のテスト ケースの成功条件。
テスト ケースを実行すると、テスト ケースに正常に合格するはずです。
上記の記事を読んだ後、ようやく有意義な開発作業を実行できるようになります。次のステップでは、すべてのユーザー登録ビジネス ロジックを実装し、もう 1 つのステップでは、userName が繰り返されるなどの異常な状況に対処します。これらの機能をすべて完了したら、JSP ページを介した登録テストを含むエンドツーエンド テストを実行する必要もあります。
上記は、新しい Java 運動: テスト駆動開発 3---ユーザー登録 4 の内容です。その他の関連コンテンツについては、PHP 中国語 Web サイト (www.php.cn) に注目してください。