Bonjour,

Je ne sais pas si c'est le bon forum pour ce post, veuillez le deplacer si ceci n'a pas sa place dans ce forum.

On a une/des fonctions font des extractions de BD dont une est ci-dessous
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
36
 
public Object execute(final Connection connection, String storedProcedureName, String city, String country, String postCode) {
	List<Object> result = new LinkedList<Object>();
 
	CallableStatement cst = null;
	ResultSet rs = null;
	try {
		cst = connection.prepareCall(storedProcedure);
		cst.setString(1, city);
		cst.setString(2, country);
		cst.setString(3, postCode);
 
		rs = cst.executeQuery();
		while (rs.next()) {
			StringBuffer sb = new StringBuffer();
			sb
				.append(rs.getString("Name")).append("\n")
				.append(rs.getString("Adress")).append("\n")
				.append(rs.getString("PostCode")).append("\n")
				.append(rs.getString("Phone")).append("\n")
				.append(rs.getString("Email")).append("\n");
			result.add(sb.toString());
		}
 
	} catch (Exception e) {
		System.err.println("Erreur " + e.getMessage());
	} finally {
		try {
			cst.close();
		} catch (Exception e) {
		try {
			rs.close();
		} catch (Exception e) {
	}
 	return result;
}
Je souhaite les migrer en utilisant Spring jdbc, au lieu d'appeler la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
execute(connection, storedProcedureName, city, country, postCode)
J'utilise celle-ci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
execute(city, country, postCode)

Par contre, au point de vue de performance auriez-vous une idee laquelle est
meuilleure

Merci d'avance




Classes Spring pour jdbc
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
 
public class MyStoredProcedure extends StoredProcedure {
	public MyStoredProcedure(DataSource dataSource, String storedProcedureName) {
		super(dataSource, storedProcedureName);
        declareParameter(new SqlReturnResultSet("rs", new MyMapper()));
        declareParameter(new SqlParameter("City", Types.VARCHAR));
        declareParameter(new SqlParameter("Country", Types.VARCHAR));
        declareParameter(new SqlParameter("PostCode", Types.VARCHAR));
 
		compile();
	}
 
	public Map execute(String city, String country, String postCode) }
		Map inputs = new HashMap();
        inputs.put("City", city);
        inputs.put("Country", country);
        inputs.put("PostCode", postCode);
		return super.execute(inputs);
	}
}
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
 
public class MyMapper  implements RowMapper {
 
  public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
 
	StringBuffer sb = new StringBuffer();
	sb
		.append(rs.getString("Name")).append("\n")
		.append(rs.getString("Adress")).append("\n")
		.append(rs.getString("PostCode")).append("\n")
		.append(rs.getString("Phone")).append("\n")
		.append(rs.getString("Email")).append("\n");
 
    return sb.toString();
  }
}