如何使用URL中的所有参数在Spring MVC中创建一个动态查询?
例如:/example?parameter1=test¶meter2=apple;fruit¶meter3=Park
对于该链接,我希望得到类似的查询:SELECT * FROM news WHERE parameter1 = test AND parameter2 = apple AND fruits AND parameter3 = Park
在同一时间,如果我有一个类似/example?parameter1=test¶meter2=apple
我不想在像SELECT * FROM news WHERE parameter1 = test AND parameter2 = apple;
更确切地说,如何创建动态查询如何自动更改URL中参数的功能?
答案 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;
}