mysql 数据库连接方法封装

rust use mysql_quick::{MysqlQuick, run, find ...}; pub fn mysql_conn() -> PooledConn { let conn = MysqlQuick::new("mysql://root:12345678@localhost:3306/dev_db").unwrap().pool.get_conn().unwrap(); conn } let mut conn = mysql_conn();

mysql 查寻方法

| 运行sql | 说明 | | ---- | ---- | | myrunvec | 执行sql,返回vec类型数据,无数据则返回vec![] | | myrundrop | 执行sql,无返回数据,最多返回id | | myruntranvec | 事务执行sql,有返回vec类型数据,无数据则返回vec![] | | myruntrandrop | 事务执行sql,无返回数据,最多返回id |

```rust let id: u64 = myrundrop(&mut conn, sql).unwrap();

// 执行 sql 语句 let data: Vec = myrunvec(&mut conn, sql).unwrap(); ```

sql快捷生成

| sql快捷生成方法 | 说明 | | ---- | ---- | | mycount | 返回计数的sql | | mydel | 删除一条数据的sql | | myfind | 查寻数据的sql | | myget | 查寻一条数据的sql | | myset | 新增一条数据的sql | | mysetmany | 批量新增数据的sql | | myupdate | 更新一条数据的sql | | myupdatemany | 批量更新数据的sql | | 自定义 | 可以直接写自己的sql语句 |

以下内容,则为常用sql的快捷方法 ```rust

// 新增一条数据 let id = myrundrop(&mut conn, myset!("fortest", { "content": "ADFaadf", "uid": 9, "info": if let Some(a) = oneinfo {a} else {"null"}, })).unwrap();

// 删除一条数据 myrundrop(&mut conn, mydel!("for_test", 50)).unwrap();

// 更新一条数据 myrundrop(&mut conn, myupdate!("for_test", 56, { "content": "更新后的内容,一一一一" })).unwrap();

// 批量 新增数据 let msql2 = mysetmany!("fortest", vec![ Item {"uid": 1, "content": "批量更新00adf"}, Item {"uid": 2, "content": "2342341"}, Item {"uid": 3, "content": "mmmmm"}, ]) myrundrop(&mut conn, msql).unwrap();

// 批量 更新数据 let sql = myupdatemany!("fortest", "uid", vec![ Item {"uid": 1, "content": "批量更新00adf"}, Item {"uid": 2, "content": "2342341"}, ]) myrun_drop(&mut conn, sql).unwrap();

// 获取一条数据 let sql1 = myget!("for_test", 33, "id, content as cc");

[derive(Serialize, Deserialize, Debug)]

struct Feedback { id: u64, cc: String } let resget: Vec = myrun_vec(&mut conn, sql1).unwrap();

// 查寻数据 let sqlf = myfind!("fortest", { p0: ["uid", ">", 330], r: "p0", select: "*", }); let resfind: Vec = myrunvec(&mut conn, sqlf).unwrap();

// 获取计数 let rescount: Vec = myrunvec(&mut conn, mycount!("fortest", {})).unwrap();

// 自定义查寻 let list: Vec = myrunvec(&mut conn, "select distinct typev3 from dishes".toowned()).unwrap();

```

mysql 事务示例

myruntranvec、myruntrandrop ```rust use mysqlquick::{TxOpts, MYEXCLUSIVELOCK, MYSHARED_LOCK};

let mut conn = mysqlconn(); // ---- 事务开始 ---- let mut tran = conn.starttransaction(TxOpts::default()).unwrap(); let getsql = myget!("fortest", 5, "id,title,content,price,total,uid") + MYEXCLUSIVELOCK; let getdata: Vec = myruntranvec(&mut tran, getsql).unwrap(); let tmp = getdata.0; if tmp.len() == 0 { tran.rollback().unwrap(); } else { if tmp[0].total <= 0 { tran.rollback().unwrap(); } else { let sql2 = myupdate!("fortest", 5, {"total": ["incr", -1]}); myruntrandrop(&mut tran, sql2).unwrap(); tran.commit().unwrap(); } } // ---- 事务结束 ----

```