引入
使用 default-features = false 禁用默认使用的tokio,自行选择运行时跟数据库类型
[]
= { = "~0.0.1-beta.15", = "../../", = false, = ["sqlx-mysql"] }
= { = "~0.5", = [ "mysql","offline","runtime-async-std-native-tls"] }
={ = "1.10.0", = [ "attributes" ]}
常用增删改查示例
使用前准备,结构体增加derive宏
使用 sqlx_model::SqlxModel 宏 自动增加辅助方法 同时会创建 UserModelRef 的结构,用于辅助增删改查操作
如果已有表结构,可以通过表结构生成对应的rs
model文件,以下工具可用:
https://crates.io/crates/sqlx-model-tools 具体使用方式参考该create文档
//#[sqlx(rename_all="lowercase")] //按规则自定义字段名
//自定义表主键,不指定默认第一个字段
//自定义关联表名,不指定为去除Model后的user
- 新增:
更多使用方法参考 tests 目录
let nike_name="new insert".to_string;
let gender=1;
let userinsert= model_option_set!;
let i1= new.execute.await.unwrap;
assert!;
- 删除:
更多使用方法参考 tests 目录
let select=;
let user=select..await.unwrap;
let detete= new
.execute_by_pk
.await.unwrap;
assert_eq!;
- 修改:
更多使用方法参考 tests 目录
let nike_name="change to 1".to_string;
let userchange= model_option_set!;
let update= new;
let update=update.execute_by_scalar_pk.await.unwrap;
assert_eq!;
- 查询:
更多使用方法参考 tests 目录
let select=;
let user=select..await.unwrap;
assert_eq!;
- 事务:
更多使用方法参考 tests 目录
let mut ta=db.begin.await.unwrap;
let nike_name="new tran".to_string;
let userinsert= model_option_set!;
new.execute.await.unwrap;
//其他 查删改操作...
ta.commit.await.unwrap;
- 事务跟Poll选择执行
辅助SQL生成操作
绑定SQL查询可以用到SQLX内部查询SQL缓存,会快少许
- 自动转义SQL生成
let data=;
let password_id=Some;
let sql=sql_format!;
println!;//select * from yaf_users where id>1 and grade in ('dd','b\'bb') and password_id = 1
//会转义'防止sql注入
- 绑定SQL方式SQL生成
let = sql_bind!;
let _= ..await.unwrap;