easysql:類型安全的查詢構造器
easysql是我使用Scala3編寫的,一個sql構造器,完全面向對象且類型安全,并且非常輕量,除了語言標準庫之外沒有任何依賴,下面來簡單介紹一下。
easysql使用類似原生sql的dsl來創(chuàng)建查詢,與其他同類庫或框架不同的是,其不僅可以構建簡單查詢,復雜查詢也不在話下,比如:

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

上面生成的類型,會在與數據庫交互后映射為類似的List結構,這一切都是自動推斷的,無需用戶手動標注。
使用scala代碼而不是字符串創(chuàng)建查詢,最大的兩個好處是:類型安全和結構化創(chuàng)建。
上面的查詢,如果有寫錯的地方,編譯器會返回給我們編譯錯誤,把大部分錯誤在編譯期拒之門外:


easysql還有更多編譯期錯誤檢查,讓我們構建查詢時更加安全。
另外還有一個很大的好處是查詢可以結構化創(chuàng)建,比如下面的子查詢:

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

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

也就是說,easysql的類型安全不是很多同類庫或框架的那種浮于表面的安全,而是可以進行更深層次的類型檢查,這得益于Scala3強大的類型系統(tǒng)。
以上是對我編寫的查詢構造器easysql進行的簡單介紹,如果大家感興趣,后續(xù)會奉上更詳細的使用方法。
謝謝。