簡體   English   中英

如何將此SQL查詢寫入jOOQ?

[英]How to write this SQL query to jOOQ?

SELECT 
    feature_name, 
    ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) 
      * cos( radians( long ) - radians(-122) ) + sin( radians(37) ) 
      * sin( radians( lat ) ) ) ) AS distance 
FROM 
    geo_features 
HAVING 
    distance < 25 
ORDER BY 
    distance

假設此靜態導入:

import static org.jooq.impl.DSL.*;

這是編寫查詢的方法:

GeoFeatures f = Tables.GEO_FEATURES;
Field<Double> distance =
    val(3959.0).mul(acos(cos(rad(37.0)))).mul(cos(rad(f.LAT)))
               .mul(rad(f.LONG).sub(rad(-122.0)).add(sin(rad(37.0)))
               .mul(sin(rad(f.LAT))).as("distance")

DSL.using(configuration)
   .select(
       f.FEATURE_NAME,
       distance
   )
   .from(f)
   .having(distance.lt(25.0))
   .orderBy(distance)

這些是要記住的關鍵事項:

  • 每個SQL函數都轉換為org.jooq.impl.DSL的函數
  • 可通過“中綴”符號訪問算術運算,但是運算符必須以方法名稱的形式編寫,例如* = mul()+ = add() or plus()- = sub() or minus()
  • jOOQ API必須明確地包裝算術運算左側的數字,使用val() (用於綁定變量)或inline() (用於內聯)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM