Diesel 2.0.0正式发布 重写了大部分内部结构

电子说

1.3w人已加入

描述

Diesel 2.0.0 已正式发布。据称此版本开发周期长达 3 年,包含了超过 1700 次 commit。

Diesel 是一个安全可扩展的 Rust ORM 框架和查询构建工具。Diesel 可避免运行时错误,提供最好的性能。

2.0 添加了许多新功能,并重写了大部分内部结构。由于这是新的大版本,它还包含许多破坏性变化,具体处理方案可查看迁移指南:https://diesel.rs/guides/migration_guide.html。 更新亮点

支持完全类型检查的 GROUP BY

支持表别名

支持通过相应类型定义 select 子句

支持 UNION/INTERSECT 查询

此外,Diesel 2.0.0 还修复了类级别 (type level) SQL 表示中的几个问题,它现在可以正确处理以下情况:

混合嵌套 LEFT JOINS 和 INNER JOINS

通过 AND,OR 和类似的运算符链接混合的可空表达式 (nullable expressions)

支持 GROUP BY 子句 Diesel 2.0 添加了对 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 查询 此功能轻松地将多个查询链接在一起,只要它们返回相同类型的字段。

 

 

 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  
      审核编辑:彭静
打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分