3 个版本
新 0.0.7 | 2024 年 8 月 21 日 |
---|---|
0.0.6 | 2024 年 8 月 17 日 |
0.0.4 | 2024 年 8 月 7 日 |
#2046 在 数据库接口
每月 257 次下载
36KB
648 行
依赖项
spring-sqlx = { version = "0.0.7", features = ["mysql"] }
您可以用 postgres
、mysql
、sqlite
功能来选择合适的数据库驱动。
配置项
[sqlx]
uri = "postgres://root:123456@localhost:5432/pg_db" # Database address
min_connections = 1 # Minimum number of connections in the connection pool, the default value is 1
max_connections = 10 # Maximum number of connections in the connection pool, the default value is 10
acquire_timeout = 30000 # Connection timeout, in milliseconds, default 30s
idle_timeout = 600000 # Connection idle time, in milliseconds, default 10min
connect_timeout = 1800000 # Maximum connection survival time, in milliseconds, default 30min
组件
配置以上配置项后,插件将自动注册一个 ConnectPool
连接池对象。此对象是 sqlx::AnyPool
的别名。
pub type ConnectPool = sqlx::AnyPool;
提取插件注册的组件
SqlxPlugin
插件会自动为我们注册一个 Sqlx 连接池组件。我们可以使用 Component
从 AppState 中提取此连接池。Component
是 axum 的一个 提取器。
use spring::get;
use spring_sqlx::{sqlx::{self, Row}, ConnectPool};
use spring_web::extractor::Component;
use spring_web::error::Result;
use anyhow::Context;
#[get("/version")]
async fn mysql_version(Component(pool): Component<ConnectPool>) -> Result<String> {
let version = sqlx::query("select version() as version")
.fetch_one(&pool)
.await
.context("sqlx query failed")?
.get("version");
Ok(version)
}
完整代码参考 sqlx-example
依赖项
~15–33MB
~523K SLoC