5

我正在研究可以在我的项目中用作模板引擎的各种库,现在 Apache Velocity 看起来是一个不错的候选者。我对它的使用有以下疑问:

是否可以在模板中指定 SQL 数据库查询并使用查询的返回值来填充参数?我在 Velocity 用户指南中找到了以下示例:

Hello,

#set( $result = $query.criteria("name") )
Your username is $result.

然而,该指南并没有解释太多关于执行 SQL 查询的内容。是否可以定义一个返回值并将该值分配给模板中的变量的 SQL SELECT 查询?我想知道类似下面的例子是否可行?

Hello,

#set( $result = $executeQuery("SELECT name FROM user") )
Your username is $result.

如果您能对此有所了解,将不胜感激。有好心的人提供一个例子,或者指向我可以找到更多文档的位置吗?

4

3 回答 3

3

我会推荐类似http://velosurf.sourceforge.net/的东西,而不是直接嵌入查询。

于 2013-01-18T16:50:11.460 回答
2

Velocity 是一个非常轻量级的模板引擎,它本身的功能很少。它通过将(由您)在上下文中定义的变量插入到模板文件中来工作。默认情况下,上下文为,这意味着模板没有要使用的变量。Velocity 不允许实例化自定义类的新对象,它只允许您使用字符串和数字文字,以及映射和列表:

#set ($n = 5)
#set ($s = 'Hello New World!')
#set ($m = {'four' : 4, 'five' : $n})
#set ($a = ['x', 'y', 'z'])

您负责通过在插值之前使用有用的对象填充上下文来使 Velocity 变得“智能”。作为起点,您可以使用一些速度工具。您可以添加自己的工具,例如让您运行查询的 SQL 工具。或者,您可以使用更高级别的框架,该框架使用速度,并且已经在模板中提供了丰富的工具集。

因此,要回答您的问题,您可以执行任何您想要的 SQL 语句,只要您在上下文中添加一个可以执行此类语句的对象。您应该在他们的开发人员指南中阅读有关如何正确使用 Velocity 的更多信息。

于 2013-01-18T18:04:54.987 回答
0

以下内容适用于 HQL(您可以与其他人一起尝试使用此示例)

显示如何显示给定查询的前 5 个结果的一般示例:

#set($hql = "<query here>")
#set($results = $xwiki.searchDocuments($hql, 5, 0))
#foreach ($item in $results)
 * $item
#end

下面的示例将向您展示您可以编写的各种 HQL 查询。 简单查询

显示用户 XWiki.JohnDoe 创建的所有文档

#set($hql = "where doc.creator='XWiki.JohnDoe'")

附加信息

你可能想看看这个链接

于 2013-01-17T08:27:32.203 回答