[英]jOOQ: reusing / copying queries
为了避免一遍又一遍地重新创建动态查询的同一部分,我将构建一次主要部分,然后在应用程序的不同部分重用这部分。 由于构建查询有点涉及(请参阅问题jOOQ: best way to get aliased fields (from #as(alias, aliasFunction))的一个方面),这应该有利于性能...
不幸的是,我不得不意识到构建器模式中的不同“步骤”不会返回修改后的副本,而是修改底层状态。 因此,我一直在寻找一种方法来创建特定“步骤”(例如SelectWhereStep
)的不可变副本,每次我需要它时都会从中初始化并随后修改(Select-)查询。 不幸的是,我无法确定实现这一目标的任何(“合法”)方式。
可以做到吗? 如果没有,最好的选择是什么?
不幸的是,我不得不意识到构建器模式中的不同“步骤”不返回修改后的副本,而是修改底层状态
这确实是jOOQ DSL/模型 API当前设计中的一个非常不幸的限制。 DSL API应该是不可变的,而模型 API 是可变的。 但正如您所注意到的,情况并非总是如此。
目前没有办法像大多数人那样克隆 jOOQ 查询,这并不是真正必要的。 无论您使用的是可变 API 还是不可变 API,实现您想要做的事情的最简洁方法是以函数方式编写 jOOQ 查询。 即代替
我打算构建一次主要部分,然后在应用程序的不同部分重用这部分
你可以用函数式的方式而不是命令式的方式来做同样的事情。 与其将“主要部分”分配给某个局部或全局变量,您还可以创建一个theMainPart()
函数来即时返回该部分。 在这篇博文中详细介绍了这一点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.