您的位置 首页 > 德语词汇

Diesel[迪塞尔]的中文翻译意思、发音、来源及流行趋势?和查询生成器

各位老铁们,大家好,今天由我来为大家分享Diesel[迪塞尔]的中文翻译意思、发音、来源及流行趋势,以及和查询生成器的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

Diesel摆脱了数据库交互的样板,并消除了运行时错误,而不会牺牲性能。它充分利用Rust的类型系统来创建一个“感觉像Rust”的低开销查询构建器。

Diesel[迪塞尔]的中文翻译意思、发音、来源及流行趋势?和查询生成器

您可以在以下位置配置数据库后端Cargo.toml:

[dependencies]\ndiesel={version="<version>",features=["<postgres|mysql|sqlite>"]}入门

请访问https://diesel.rs/guides/getting-started查找我们内容丰富的入门教程。有关更多具体功能的指南即将推出。

如果您遇到问题,Diesel有一个非常活跃的Gitter房间。您可以通过gitter.im/diesel-rs/diesel寻求帮助。如需有关Diesel未来的较长问题和讨论的帮助,请在GitHub讨论上打开讨论。

简单的查询完全是轻而易举的事。从数据库加载所有用户:

users::table.load(&mutconnection)

执行的SQL:

SELECT*FROMusers;

加载用户的所有帖子:

Post::belonging_to(user).load(&mutconnection)

执行的SQL:

SELECT*FROMpostsWHEREuser_id=1;复杂查询

Diesel强大的查询构建器可帮助您以零成本构建根据需要简单或复杂的查询。

letversions=Version::belonging_to(krate)\n.select(id)\n.order(num.desc())\n.limit(5);\nletdownloads=version_downloads\n.filter(date.gt(now-90.days()))\n.filter(version_id.eq_any(versions))\n.order(date)\n.load::<Download>(&mutconn)?;

执行的SQL:

SELECTversion_downloads.*\nWHEREdate>(NOW()-'90days')\nANDversion_id=ANY(\nSELECTidFROMversions\nWHEREcrate_id=1\nORDERBYnumDESC\nLIMIT5\n)\nORDERBYdate更少的样板文件

Dieselcodegen为您生成样板文件。它让您可以专注于业务逻辑,而不是映射到SQL行或从SQL行映射。

#[derive(Queryable,Selectable)]\n#[diesel(table_name=downloads)]\npubstructDownload{\nid:i32,\nversion_id:i32,\ndownloads:i32,\ncounted:i32,\ndate:SystemTime,\n}

而不是没有柴油:

pubstructDownload{\nid:i32,\nversion_id:i32,\ndownloads:i32,\ncounted:i32,\ndate:SystemTime,\n}\n\nimplDownload{\nfnfrom_row(row:&Row)->Download{\nDownload{\nid:row.get("id"),\nversion_id:row.get("version_id"),\ndownloads:row.get("downloads"),\ncounted:row.get("counted"),\ndate:row.get("date"),\n}\n}\n}插入数据

这不仅仅是读取数据。Diesel使使用新记录的结构变得容易。

#[derive(Insertable)]\n#[diesel(table_name=users)]\nstructNewUser<'a>{\nname:&'astr,\nhair_color:Option<&'astr>,\n}\n\nletnew_users=vec![\nNewUser{name:"Sean",hair_color:Some("Black")},\nNewUser{name:"Gordon",hair_color:None},\n];\n\ninsert_into(users)\n.values(&new_users)\n.execute(&mutconnection);

执行的SQL:

INSERTINTOusers(name,hair_color)VALUES\n('Sean','Black'),\n('Gordon',DEFAULT)

如果您需要插入的行中的数据,只需更改execute为get_result或get_results。迪塞尔将负责剩下的事情。

letnew_users=vec![\nNewUser{name:"Sean",hair_color:Some("Black")},\nNewUser{name:"Gordon",hair_color:None},\n];\n\nletinserted_users=insert_into(users)\n.values(&new_users)\n.get_results::<User>(&mutconnection);

执行的SQL:

INSERTINTOusers(name,hair_color)VALUES\n('Sean','Black'),\n('Gordon',DEFAULT)\nRETURNING*更新数据

Diesel的代码生成器可以生成多种更新行的方法,让您以对您的应用程序有意义的方式封装逻辑。

post.published=true;\npost.save_changes(&mutconnection);

一次性批量变更:

update(users.filter(email.like("%@spammer.com")))\n.set(banned.eq(true))\n.execute(&mutconnection)

使用结构体进行封装:

update(Settings::belonging_to(current_user))\n.set(&settings_form)\n.execute(&mutconnection)原始SQL

总会有某些查询更容易编写为原始SQL,或者无法使用查询生成器表达。即使在这些情况下,Diesel也提供了易于使用的API来编写原始SQL。

#[derive(QueryableByName)]\n#[diesel(table_name=users)]\nstructUser{\nid:i32,\nname:String,\norganization_id:i32,\n}\n\n//Using`include_str!`allowsustokeeptheSQLina\n//separatefile,whereoureditorcangiveusSQLspecific\n//syntaxhighlighting.\nsql_query(include_str!("complex_users_by_organization.sql"))\n.bind::<Integer,_>(organization_id)\n.bind::<BigInt,_>(offset)\n.bind::<BigInt,_>(limit)\n.load::<User>(&mutconn)?;项目地址:

https://github.com/diesel-rs/diesel

好了,本文到此结束,如果可以帮助到大家,还望关注本站哦!

本站涵盖的内容、图片、视频等数据,部分未能与原作者取得联系。若涉及版权问题,请及时通知我们并提供相关证明材料,我们将及时予以删除!谢谢大家的理解与支持!

Copyright © 2023