0

我有一个问题。

我有 SQL,我需要附加不同类型的“限制”,甚至进行连接。这取决于用户的搜索条件。

该 SQL 将涉及不同的表,因为它可以搜索一对多的关系,因此休眠 ORM 不能支持我的要求。

请问是否有设计模式可以帮助构建此类 SQL 语句?

4

2 回答 2

0

我确实有一个类似的要求,我有一种无上下文的语言来定义搜索条件,解析ParseEntryParseTree类似于Restrictions. 我使用 aSQLQueryGeneratorVisitor访问解析表并生成 SQL 查询,HibernateCriteriaGeneratorVisitor如果需要为单个实体生成条件,则类似于 a。因此,我基本上使用了访问者模式,使解析树和条目可访问,以便可以生成不同类型的条件(SQL/Hibernate 或将来的其他东西)。

于 2012-09-05T16:01:12.190 回答
0

适合表示语言语句问题的设计模式是解释器模式。但在开始编写 SQL 解析器之前,请查看ANTLR。更重要的是,问自己两个问题:

  1. 不同 SQL 的数量是否证明了开发通用 SQL 解释器解决方案而不是编程(仅 if-else 语句)我的 5-10 个不同查询的努力?
  2. 我是否详细查看了 Hibernate 参考手册?
于 2012-09-06T08:29:17.970 回答