Bonjour,
développant un petit module Batch via Spring Batch, j'aimerais améliorer une partie du code. Après lecture du fichier, j'insère les données en base (Oracle) via un batchPreparedStatement. Seulement, je dois tester si la valeur est "null" avant insertion. Je me retrouve avec beaucoup de IF / ELSE, ce qui n'est pas propre.
Comment améliorer le code ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 @Override public AdherentsBO insertAdherentsBO(AdherentsBO adherentsBO) { try { /* The batch prepared statement setter. */ final BatchPreparedStatementSetter batchPreparedStatementSetter = new BatchPreparedStatementSetter() { public void setValues(final PreparedStatement pPreparedStatement, final int pIndex) throws SQLException { pPreparedStatement.setString(1, adherentsBO.getXX()); pPreparedStatement.setString(2, adherentsBO.getXX2()); pPreparedStatement.setString(3, adherentsBO.getXX3()); pPreparedStatement.setString(4, adherentsBO.getXX4()); if (!adherentsBO.getDate1().equalsIgnoreCase("null")) { pPreparedStatement.setTimestamp(6, convertDateToTimestampSql(adherentsBO.getDate1())); } else { pPreparedStatement.setNull(6, Types.TIMESTAMP); } if (!adherentsBO.getString1().equalsIgnoreCase("null")) { pPreparedStatement.setString(7, adherentsBO.getString1()); } else { pPreparedStatement.setNull(7, Types.VARCHAR); } .... // et ainsi de suite pour tous les champs qui peuvent avoir une valeur "null" dans le fichier lu } public int getBatchSize() { return 1; } }; this.jdbcTemplate.batchUpdate(ConstantesRequetesSql.SQL_INSERT_ADHERENTS, batchPreparedStatementSetter); } catch (final DataAccessException e) { throw new JdbcException(e, false, true); } return adherentsBO; }
Merci pour vos pistes et retour.
Cdt,
Partager