SpringMVC, динамический запрос MySQL

Как я могу сделать один динамический запрос в Spring MVC со всеми моими параметрами из URL? Например:/example?parameter1=test&parameter2=apple;fruit&parameter3=Park

Для этой ссылки я хочу иметь такой запрос: SELECT * FROM news WHERE parameter1 = test AND parameter2 = apple AND fruits AND parameter3 = Park

В то же время, если у меня есть такой URL /example?parameter1=test&parameter2=apple

Я не хочу создавать новый запрос в чем-то вроде SELECT * FROM news WHERE parameter1 = test AND parameter2 = apple;

Точнее, как я могу создать динамический запрос, как автоматически изменить функцию параметров из URL?


person Dumitru Vlad    schedule 13.07.2015    source источник


Ответы (2)


Не рекомендуется передавать динамические данные в запрос, который наверняка вызовет у вас атаки SQL-инъекций.

Вы можете использовать BeanPropRowMapper (http://www.mkyong.com/spring/spring-jdbctemplate-querying-examples/) и тип подготовленного оператора (именованные параметры http://www.studytrails.com/frameworks/spring/spring-jdbc-template-named-params.jsp) в Spring JDBC для получения аналогичного, но типизированного запроса. (Ваш геттер и сеттер Java Bean вызываются автоматически, запрос обновляется из этого)

Не пишите динамический запрос (держите его строго типизированным)

person Community    schedule 13.07.2015

Проверьте это, если вы можете использовать его ..

  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;
}
person Rama Krishna    schedule 13.07.2015