Diesel 2.0.0 已正式發(fā)布。據(jù)稱此版本開(kāi)發(fā)周期長(zhǎng)達(dá) 3 年,包含了超過(guò) 1700 次 commit。
Diesel 是一個(gè)安全可擴(kuò)展的RustORM 框架和查詢構(gòu)建工具。Diesel 可避免運(yùn)行時(shí)錯(cuò)誤,提供最好的性能。
2.0 添加了許多新功能,并重寫(xiě)了大部分內(nèi)部結(jié)構(gòu)。由于這是新的大版本,它還包含許多破壞性變化,具體處理方案可查看遷移指南:https://diesel.rs/guides/migration_guide.html。 更新亮點(diǎn)
支持完全類型檢查的GROUP BY
支持表別名
支持通過(guò)相應(yīng)類型定義 select 子句
支持UNION/INTERSECT查詢
此外,Diesel 2.0.0 還修復(fù)了類級(jí)別 (type level) SQL 表示中的幾個(gè)問(wèn)題,它現(xiàn)在可以正確處理以下情況:
混合嵌套LEFT JOINS和INNER JOINS
通過(guò)AND,OR和類似的運(yùn)算符鏈接混合的可空表達(dá)式 (nullable expressions)
支持GROUP BY子句 Diesel 2.0 添加了對(duì)GROUP BY子句的支持,用于 select 查詢。 示例
users::table.inner_join(posts::table) .group_by(users::id) .select((users::name, count(posts::id)))支持表別名 以下查詢展示了此功能:
// Define new table alias for the existing `users` tablelet users1 = diesel::users as user1); // Use the corresponding alias inside any existing queryusers::table .inner_join(users1.on(users::id).eq(users1.field(users::id)))) .select((users::id, users::name, users1.field(users::name))) .order_by(users1.field(users::id))支持UNION/INTERSECT查詢 此功能輕松地將多個(gè)查詢鏈接在一起,只要它們返回相同類型的字段。
users.select(user_name.nullable()) .union(animals.select(animal_name).filter(animal_name.is_not_null()))Release Note:https://github.com/diesel-rs/diesel/releases/tag/v2.0.0 Changelog:https://diesel.rs/changelog.html
-
框架
+關(guān)注
關(guān)注
0文章
403瀏覽量
17502 -
運(yùn)算符
+關(guān)注
關(guān)注
0文章
172瀏覽量
11087
原文標(biāo)題:Diesel 2.0.0正式發(fā)布,Rust ORM框架
文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論