Rust使用rbatis

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;
}

posted @ 2025-09-16 16:55  朝阳1  阅读(12)  评论(0)    收藏  举报