2015-07-13 1 views
1

Comment puis-je faire une requête dynamique dans Spring MVC avec tous mes tous mes paramètres de l'URL? Pour exemple: /example?parameter1=test&parameter2=apple;fruit&parameter3=ParkSpringMVC, requête dynamique MySQL

Pour ce lien que je veux avoir une requête comme: SELECT * FROM news WHERE parameter1 = test AND parameter2 = apple AND fruits AND parameter3 = Park

Dans la même temps si j'ai une URL comme celle /example?parameter1=test&parameter2=apple

Je ne veux pas créer une nouvelle requête dans certains comme SELECT * FROM news WHERE parameter1 = test AND parameter2 = apple;

Plus exactement, comment puis-je créer une requête dynamique comment changer automatiquement en fonction des paramètres de l'URL?

Répondre

1

Ce n'est pas une bonne idée de transmettre des données dynamiques à une requête qui vous causera sûrement des attaques par injection SQL.

Vous pouvez utiliser BeanPropRowMapper (http://www.mkyong.com/spring/spring-jdbctemplate-querying-examples/) et préparé genre de déclaration d'approche (paramètres nommés http://www.studytrails.com/frameworks/spring/spring-jdbc-template-named-params.jsp) au printemps JDBC pour obtenir similaire, mais tapé la requête. (Votre Java Bean getter et setter sont automatiquement appelés, la requête est mise à jour de cette)

Ne pas écrire requête dynamique (garder dactylographiée stricte)

0

Cochez cette case si vous pouvez l'utiliser ..

public StringBuilder prepareQuery(String tblName, String url) 
    { 
     StringBuilder query = new StringBuilder("Select * from " + tblName + " Where "); 

    String[] params = url.split("&"); 

    for (int i = 0; i < params.length; i++) 
    { 
     String str = params[i]; 
     System.out.println(str.contains(";")); 
     if (i == 0) 
     { 

      query.append(str.replaceAll(";", " AND ")); 
     } 
     else 
     { 
      query.append(" AND " + str.replaceAll(";", " AND ")); 

     } 
    } 
    return query; 
}