依赖:
toml
mysql = "22.2"
serde = { version = "1.0", features = ["derive"] }
serde_json = { version = "1.0", default-features = false, features = ["alloc"] }
regex = "1.6"
目前仅支持 mysql
myrun、myrunid
```rust
use accessdb::{AccessMy, myrun, myfind ...};
pub fn mysqlconn() -> PooledConn {
let conn = AccessMy::new(1, 10, "mysql://root:12345678@localhost:3306/devdb").pool.getconn().unwrap();
conn
}
let mut conn = mysql_conn();
// 新增一条数据 let id = myrunid(&mut conn, myset!("feedback", { "content": "ADFaadf", "uid": 9, }));
// 删除一条数据 myrunid(&mut conn, mydel!("feedback", 50));
// 更新一条数据 myrunid(&mut conn, myupdate!("feedback", 56, { "content": "更新后的内容,一一一一" }));
// 获取一条数据 let sql1 = myget!("feedback", 33, "id as id, feedback.content as cc");
struct Feedback {
id: u64,
cc: String
}
let resget: (Vec
// 查寻数据
let sqlf = myfind!("feedback", {
p0: ["uid", ">", 330],
r: "p0",
page: 2,
limit: 5,
select: "id, content as cc",
});
let resfind: (Vec
// 获取计数
let rescount: (Vec
// 批量 新增数据 let msql = mysetmany!("feedback", [ {"uid": 1, "content": "批量更新00adf"}, {"uid": 2, "content": "2342341"}, {"uid": 3, "content": "mmmmm"}, {"uid": 4, "content": "zzzzzz"}, {"uid": 5, "content": "奔苦asda工工"}, {"uid": 6, "content": "555"} ]); myrunid(&mut conn, msql);
```
mydo、mydoid
```rust
use accessdb::{TxOpts, MYEXCLUSIVELOCK};
let mut conn2 = myconnect();
let mut tran2 = conn2.starttransaction(TxOpts::default()).unwrap();
let getsql = myget!("feedback", 59, "id,num,content,createdat") + MYEXCLUSIVELOCK; // 加锁操作,
let getdata: (Vec
let tmp = getdata.0; if tmp.len() == 0 { // 回滚事务 tran2.rollback().unwrap(); } else { if tmp[0].num <= 0 { // 回滚事务 tran2.rollback().unwrap(); } else { let sql2 = myupdate!("feedback", 59, {"num": ["incr", -1]}); mydo_id(&mut tran2, sql2); // 提交事务 tran2.commit().unwrap(); } }
```