spring-sqlx Plugin
spring-sqlx is an automatic assembly for sqlx
SQLx is an asynchronous SQL library that provides strongly typed database access with zero runtime reflection by validating SQL statements at compile time, without relying on an ORM.
[](https://crates.io/crates/spring-sqlx) [](https://docs.rs/spring-sqlx)Dependencies
spring-sqlx = { version = "<version>", features = ["mysql"] }
You can replace postgres, mysql, sqlitefeature to select the appropriate database driver.
optional features:
with-jsonwith-chronowith-rust_decimalwith-bigdecimalwith-uuidwith-time
Configuration items
[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
Components
After configuring the above configuration items, the plugin will automatically register a ConnectPool connection pool object. This object is an alias for sqlx::AnyPool.
pub type ConnectPool = sqlx::AnyPool;
Extract the Component registered by the plugin
The SqlxPlugin plugin automatically registers a Sqlx connection pool component for us. We can use Component to extract this connection pool from AppState. Component is an axum extractor.
use spring_sqlx::{sqlx::{self, Row}, ConnectPool};
use spring_web::get;
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)
}
Complete code reference sqlx-example