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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66
|
public List<Intervenant> findAll(String identite, String prenom, String nom)
{
StringBuilder sb = new StringBuilder(80);
sb.append("select model from Intervenant model where 1=1");
SQLParametersUtils.addCriteria(sb, " and ", "ecident", identite);
SQLParametersUtils.addCriteria(sb, " and ", "ecprenom", prenom);
SQLParametersUtils.addCriteria(sb, " and ", "ecnom", nom);
Query query = entityManager.createQuery(sb.toString());
SQLParametersUtils.addParameter(sb, query, "ecident", identite);
SQLParametersUtils.addParameter(sb, query, "ecprenom", prenom);
SQLParametersUtils.addParameter(sb, query, "ecnom", nom);
List<Intervenant> list = query.getResultList();
return list;
}
Et la classe utilitaires
public class SQLParametersUtils
{
public static String convertGenericCharacters(String value)
{
if ( value == null ) return null;
String result = value.replace('*', '%');
return result;
}
public static boolean isParameterValid(Object parameter)
{
if ( parameter == null ) return false;
if ( parameter instanceof String && ((String)parameter).trim().length() == 0 ) return false;
return true;
}
public static void addCriteria(StringBuilder sb, String testType, String parameterName, Object parameter)
{
if ( ! isParameterValid(parameter) ) return;
sb.append(testType).append(parameterName);
if ( parameter instanceof String )
{
String value = convertGenericCharacters( (String)parameter );
if ( value.indexOf("%") != -1 ) sb.append(" like :").append(parameterName);
else sb.append(" = :").append(parameterName);
}
else sb.append(" = :").append(parameterName);
}
public static void addParameter(StringBuilder sb, Query query, String name, Object parameter)
{
if ( sb.indexOf(name) == -1 ) return;
if ( parameter instanceof String )
{
String value = convertGenericCharacters( (String)parameter );
query.setParameter(name, value);
return;
}
query.setParameter(name, parameter);
}
} |
Partager