rbatis不需要安装mysql驱动,diesel这种orm需要额外安装mysql驱动,安了半天没安好,去他妈的把
toml
rbs = { version = "4.6"}
rbatis = { version = "4.6"}
#drivers
rbdc-mysql = { version = "4.6" }
# 其他依赖
serde = { version = "1", features = ["derive"] }
serde_json = "1.0"
tokio = { version = "1", features = ["full"] }
log = "0.4"
fast_log = { version = "1.6", features = ["lz4", "zip", "gzip"] }
rs
use rbatis::rbdc::datetime::DateTime;
use rbs::value;
use rbatis::RBatis;
use rbdc_mysql::driver::MysqlDriver;
use serde::{Deserialize, Serialize};
use rbatis::crud;
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct BizActivity {
pub id: Option<String>,
pub name: Option<String>,
pub status: Option<i32>,
pub create_time: Option<DateTime>,
pub additional_field: Option<String>,
}
// 自动生成 CRUD 方法
crud!(BizActivity{},"BizActivity");
#[tokio::main]
async fn main() {
// 配置日志
fast_log::init(fast_log::Config::new().console()).expect("rbatis初始化失败");
// 初始化 rbatis
let rb = RBatis::new();
// 连接数据库
rb.init(MysqlDriver{}, "mysql://admin:b7371d927aec647d@172.17.0.185:3306/test").unwrap();
// 创建数据
let activity = BizActivity {
id: Some("1".into()),
name: Some("测试活动".into()),
status: Some(1),
create_time: Some(DateTime::now()),
additional_field: Some("额外信息".into()),
};
// 插入数据
let data = BizActivity::insert(&rb, &activity).await;
// 批量插入
let data = BizActivity::insert_batch(&rb, &vec![BizActivity {
id: Some("2".into()),
name: Some("活动 2".into()),
status: Some(1),
create_time: Some(DateTime::now()),
additional_field: Some("信息 2".into()),
}, BizActivity {
id: Some("3".into()),
name: Some("活动 3".into()),
status: Some(1),
create_time: Some(DateTime::now()),
additional_field: Some("信息 3".into()),
},
], 10).await;
// 根据 map 条件更新
let data = BizActivity::update_by_map(&rb, &activity, value!{ "id": "1" }).await;
// 根据 map 条件查询
let data = BizActivity::select_by_map(&rb, value!{"id":"2","name":"活动 2"}).await;
// LIKE 查询
let data = BizActivity::select_by_map(&rb, value!{"name like ":"%活动%"}).await;
// 大于查询
let data = BizActivity::select_by_map(&rb, value!{"id > ":"2"}).await;
// IN 查询
let data = BizActivity::select_by_map(&rb, value!{"id": &["1", "2", "3"]}).await;
// 根据 map 条件删除
let data = BizActivity::delete_by_map(&rb, value!{"id": &["1", "2", "3"]}).await;
}