最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

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

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:類型安全的查詢構造器的評論 (共 條)

分享到微博請遵守國家法律
西峡县| 贵州省| 辰溪县| 白河县| 汾阳市| 阳谷县| 任丘市| 灯塔市| 龙海市| 庄河市| 彩票| 眉山市| 潮安县| 黄梅县| 濮阳市| 平乐县| 鄱阳县| 阿荣旗| 墨玉县| 丁青县| 城口县| 平阳县| 西城区| 旬邑县| 芮城县| 大方县| 霍邱县| 西青区| 临武县| 包头市| 潼南县| 屯留县| 九寨沟县| 民县| 西乌| 谷城县| 民丰县| 漳州市| 莲花县| 赞皇县| 闽清县|