我有一个问题。
我有SQL,我需要附加不同类型的“限制”,甚至做一个连接。这取决于用户的搜索条件。
这个SQL会涉及不同的表,因为它可以搜索一对多的关系,因此hibernate ORM不能支持我的要求。
我是否知道是否有设计模式来帮助构建此类SQL语句?
答案 0 :(得分:0)
我确实有类似的要求,我有一个无上下文的语言来定义搜索条件,解析为ParseEntry
中与ParseTree
类似的Restrictions
个对象。我使用SQLQueryGeneratorVisitor
访问解析表并生成SQL查询,类似于HibernateCriteriaGeneratorVisitor
,如果需要为单个实体生成标准。所以,我基本上使用Visitor模式使得解析树和条目可访问,以便可以生成不同类型的条件(SQL / Hibernate或将来的其他东西)。
答案 1 :(得分:0)
适合表示语言陈述问题的设计模式是Interpreter pattern。但在开始编写SQL解析器代码之前,请先查看ANTLR。 更重要的是,问自己两个问题: