[英]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.