当前位置: 首页 > 面试题库 >

如何传递参数进行查询?

尉迟跃
2023-03-14
问题内容

我正在尝试为我的应用程序编写查询,但是遇到了一些麻烦。我需要将数据库的一个字段作为参数传递,例如:

SELECT name, phone, email 
FROM company 
WHERE $P{clause} = $P{key}
ORDER BY $P{order}

因为WHERE子句和ORDER BY子句是动态的,所以用户可以选择。

使用$P{}它没有用。


问题答案:

JasperReports中 有两个用于参数引用的语法表达式: $P{} 和和 $P!{}

  • $ P {paramName}语法 主要用于设置 WHERE 输入参数值。替换算法是“智能”的,其实现使用java.sql.PreparedStatement:对于 java.lang.String 参数,引擎将用引号将 $ P {parameterName} 替换 带引号的值,对于 java.lang.Integer- 则将替换 数字的值,依此类推。

例子:

| 参数名称| 参数类型| 参数值|
|:--------------- | ------------------- |:----------- ----:|
| eventName | java.lang.String | 奥运会|
| eventType | java.lang.Integer | 2 |

原始表达(替换):

SELECT startDate, endDate, rating FROM events WHERE name=$P{eventName} AND type=$P{eventType}

结果将是:

SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND type=2
  • $ P!{paramName}语法 主要用于执行“简单”替换。

例子:

| 参数名称| 参数类型| 参数值|
|:--------------- | ------------------:|:----------- ----:|
| tableName | java.lang.String | 大事记
| eventName | java.lang.String | 奥运会|
| 频道| java.lang.String | “英国广播公司” |
| 类型 java.lang.String | 运动|

原始表达(替换):

SELECT startDate, endDate, rating FROM $P!{tableName} WHERE name='$P!{eventName}' AND channel=$P!{channel} AND type=$P!{type}

结果将是:

SELECT startDate, endDate, rating FROM events WHERE name='Olympic Games' AND channel='BBC' AND type=sport

有关更多信息,
您可以阅读“使用报告参数”一文,并查看此“查询”样本。

在您的情况下,正确的表达可能是这样的:

SELECT name, phone, email FROM company WHERE $P!{clause} = $P{key} ORDER BY $P!{order}

其中 $ P {key} java.lang.String 参数

或这样(取决于 $ P!{clause}的 值)

SELECT name, phone, email FROM company WHERE $P!{clause} = $P!{key} ORDER BY $P!{order}

其中 $ P {key} java.lang.String 参数



 类似资料:
  • 问题内容: 在我的HQL查询下方找到 该查询工作正常,但是在此情况下,我想传递userId的值,但无法弄清楚该怎么做。请帮助..!提前致谢..!! 问题答案: 我很简单地将参数添加到HQL __ 在这里,我有硬编码15您可以简单地使用变量代替它

  • 本文向大家介绍Mybatis传递多个参数进行SQL查询的用法,包括了Mybatis传递多个参数进行SQL查询的用法的使用技巧和注意事项,需要的朋友参考一下 PS:ibatis3如何传递多个参数有两个方法:一种是使用java.Map,另一种是使用JavaBean。 当只向xxxMapper.xml文件中传递一个参数时,可以简单的用“_parameter”来接收xxxMapper.java传递进来的参

  • 问题内容: 我将数据传递到刀片视图并在刀片视图中尝试运行,但最终出现错误,提示未定义。 我的问题是如何调用数组? 问题答案: 您可以使用方法将数据传递到视图。

  • 我有一个服务类,它通过使用< code > carrepository . retrieve cars()调用JPA存储库来接收汽车列表。存储库方法使用本地查询来检索记录。 现在我想传递参数< code > carrepository . retrieve cars(Long vinNo,Long serialNo)并在查询中使用它们。我假设我会需要一些东西作为准备好的陈述。然而,我不知道如何实现

  • 我是新来的Node.js,并试图检查如果电子邮件已经通过发送电子邮件作为一个url参数从iOS应用程序。它不起作用,不确定我做错了什么。 我无法console.log前端发送的VSCode中的电子邮件参数,它在XCODE(http://localhost:3000/api/user/email/test@gmail.com)中打印,我知道后端正在获取GET请求。 我的路由器代码是: 非常感谢。

  • 我的项目中有一个查询来检索游戏列表并将其显示在LazyColumn中。当我查询整个集合时,它可以正常工作,但我想在片段中放一个wherite子句,它需要2个参数,我必须在片段中传递,但我不知道如何用Jetpack compose传递它。 下面是已经到位并正在工作的查询: 我需要在appModule中添加.where(PLAYERS,listOf(user1+“”+user2,user2+“”+us