SpringMVC,MySQL动态查询

时间:2015-07-13 12:29:39

标签: java mysql spring-mvc dynamicquery dynamic-queries

如何使用URL中的所有参数在Spring MVC中创建一个动态查询? 例如:/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中参数的功能?

2 个答案:

答案 0 :(得分:1)

将动态数据传递给查询这不一定会导致SQL注入攻击。

您可以在Spring JDBC中使用BeanPropRowMapper(http://www.mkyong.com/spring/spring-jdbctemplate-querying-examples/)和预处理语句类方法(命名参数http://www.studytrails.com/frameworks/spring/spring-jdbc-template-named-params.jsp)来实现类似但类型化的查询。 (您的Java Bean getter和setter会自动调用,查询会从中更新)

不要编写动态查询(严格键入)

答案 1 :(得分: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;
}