1

如何在 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

如果我有这样的网址,同时/example?parameter1=test&parameter2=apple

我不想在某个查询中创建一个新查询,例如SELECT * FROM news WHERE parameter1 = test AND parameter2 = apple;

更确切地说,如何创建动态查询如何自动更改 URL 中的参数功能?

4

2 回答 2

1

将动态数据传递给查询并不是一个好主意,这肯定会导致您的 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 getter 和 setter 会自动调用,查询会从中更新)

不要编写动态查询(保持严格类型)

于 2015-07-13T12:42:32.620 回答
0

如果可以使用,请检查它..

  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;
}
于 2015-07-13T12:58:37.787 回答