Après avoir terminé l'infrastructure pour les opérations de base de données, il est temps pour nous d'effectuer réellement les opérations sur les données JDBC. Le diagramme ER de la table de base de données impliquée est le suivant :
Comme le montre la figure ci-dessus, notre première étape consiste à ajouter des enregistrements à la table t_user. Étant donné que l'enregistrement des utilisateurs nécessite l'exploitation de plusieurs tables, les transactions doivent être utilisées. Tout d'abord, écrivez un cadre de transaction simple basé sur JDBC. Le code est le suivant :
@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; }
La seconde est l'opération d'ajout d'utilisateur spécifique. Le code est le suivant :
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; }
Enfin, modifiez la condition de réussite dans le scénario de test par l'ID utilisateur renvoyé supérieur à 0.
Exécutez le scénario de test et il devrait réussir.
Après les articles ci-dessus, nous pouvons enfin réaliser un travail de développement significatif. L'étape suivante consiste à mettre en œuvre toute la logique métier d'enregistrement des utilisateurs, ainsi qu'à traiter les situations anormales, telles que la répétition d'un nom d'utilisateur. Après avoir terminé toutes ces fonctions, nous devons également effectuer des tests de bout en bout, ce qui implique des tests d'enregistrement via les pages JSP.
Ce qui précède est le contenu du nouveau mouvement Java : développement piloté par les tests 3 --- enregistrement des utilisateurs 4. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (m.sbmmt.com) !