# db_utils ## 主要是为mysql做的一些简化curd操作,集成了许多工具的功能 ## db的连接在对应配置里面 ### 需要在项目路径下添加配置 application.toml ### 内容: ``` [profiles] db = "test" // 使用哪个db文件配置 test为db_test.toml static_resource = "./" // 静态文件路径 可忽略 limit = 100 // 默认分页数量 (没有用)可忽略 ``` ### application.toml为第一层的配置文件 ### dev为生产环境文件,test为测试环境文件 里面集成了db连接方式 需要自己添加 ### 内容为: ``` ## 数据库测试分支 ## mysql数据库 [mysql] ## mysql数据库地址 ip = "127.0.0.1" ## 数据库端口 port = 3306 ## 数据库账号 username = "root" ## 数据库密码 password = "yannuo" ## 数据库库名 db_name = "test" [redis] ## redis地址 ip = "127.0.0.1" ## 端口 port = 6379 ## token超时时间 token_timeout = 86400 ## 普通超时时间 timeout = 86400 ``` ## 最重要的是macro_builder中的过程宏,在quote!块里面修改或新增功能,并且在CommonDbImpl trait模块里面添加对应函数 ### 例子: ``` use macro_builder::CommonDbMacro; use serde_derive::{Serialize, Deserialize}; #[derive(Debug, Serialize, Deserialize, CommonDbMacro)] pub struct User { pub id: u32, pub name: String, pub address: String, pub phone: u32 } impl User { pub fn new(id: u32, name: String, address: String, phone: u32) -> Self { Self {id, name, address, phone,} } } pub trait DbImpl { fn get(table_name: &str) -> usize { let mut conn = db_tool::get_db_conn(); conn.query_first(format!("select count(*) from {}", table_name)).unwrap().unwrap() } } impl DbImpl for User { } #[test] fn test() { // 获取表数据的数量 let number = User::get_count("table"); println!("number: {}", number); let number2 = User::get("table"); println!("number2: {}", number2); // 获取表数据 let user_list = User::batch_select("table", 1, 100); for item in user_list { println!("user: {:?}", item); } let user = User::new(1, "tester".to_owned(), "earth".to_owned(), 10086); // 插入 user.insert("table"); // 更新 user.update("table"); // 删除 User::delete("table", 1); } ```