国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網 會員登陸 & 注冊

easysql:類型安全的查詢構造器

2023-03-20 11:38 作者:死了都要吃飯  | 我要投稿

easysql是我使用Scala3編寫的,一個sql構造器,完全面向對象且類型安全,并且非常輕量,除了語言標準庫之外沒有任何依賴,下面來簡單介紹一下。

easysql使用類似原生sql的dsl來創(chuàng)建查詢,與其他同類庫或框架不同的是,其不僅可以構建簡單查詢,復雜查詢也不在話下,比如:

這是一個攜帶join、子查詢和聚合函數的較復雜查詢

上面的較為復雜的查詢,也無需使用字符串拼接創(chuàng)建,而是使用純scala代碼,如無意外,我們可以在ide上看到其正確推斷出了查詢的類型:

生成的查詢類型為一個User和Post的二元組

上面生成的類型,會在與數據庫交互后映射為類似的List結構,這一切都是自動推斷的,無需用戶手動標注。

使用scala代碼而不是字符串創(chuàng)建查詢,最大的兩個好處是:類型安全和結構化創(chuàng)建。

上面的查詢,如果有寫錯的地方,編譯器會返回給我們編譯錯誤,把大部分錯誤在編譯期拒之門外:

錯誤的類型相互比較會產生編譯錯誤
別名字符串如果為空字符串會產生編譯錯誤

easysql還有更多編譯期錯誤檢查,讓我們構建查詢時更加安全。

另外還有一個很大的好處是查詢可以結構化創(chuàng)建,比如下面的子查詢:

這是一個子查詢,無需像真正的sql一樣嵌套創(chuàng)建

可以看到,我們通過easysql,可以分步驟創(chuàng)建一個復雜查詢,無需像真正的sql一樣去嵌套,靈活性和可讀性都上了一個臺階,并且,可以通過子查詢的列名或者別名來推斷列的類型,我們使用ide查看一下s2的類型:

查詢類型被正確推斷出來了

可以看到,easysql為我們正確生成了外部查詢的類型,并且,如果上面的字段名寫錯了,也會產生編譯錯誤:

編譯器正確推斷出c1不是該子查詢的字段

也就是說,easysql的類型安全不是很多同類庫或框架的那種浮于表面的安全,而是可以進行更深層次的類型檢查,這得益于Scala3強大的類型系統(tǒng)。

以上是對我編寫的查詢構造器easysql進行的簡單介紹,如果大家感興趣,后續(xù)會奉上更詳細的使用方法。

謝謝。



easysql:類型安全的查詢構造器的評論 (共 條)

分享到微博請遵守國家法律
商水县| 太仓市| 凤城市| 杭州市| 黄平县| 来凤县| 渑池县| 宁德市| 龙江县| 抚宁县| 柞水县| 甘泉县| 天全县| 威远县| 天祝| 敖汉旗| 特克斯县| 安多县| 洪雅县| 阳谷县| 安吉县| 高尔夫| 望奎县| 德保县| 张家口市| 施甸县| 都安| 晋江市| 洛隆县| 茂名市| 仪陇县| 西乡县| 恩施市| 安泽县| 宝鸡市| 吉林市| 泊头市| 偃师市| 虎林市| 兴隆县| 海安县|