rbatis-wrapper
🚀 一个基于 rbatis 的现代化查询构建器,类似于 MyBatis Plus 的链式查询风格。
✨ 特性
- 🔗 链式调用: 类似 MyBatis Plus 的查询构建器风格
- 📄 分页支持: 内置分页功能,支持总数统计
- 🛠 自定义SQL: 支持复杂的自定义 SQL 查询
- 🔄 JOIN查询: 支持 INNER JOIN、LEFT JOIN、RIGHT JOIN
- 🎯 类型安全: 基于泛型的类型安全查询
- ⚡ 异步支持: 完全支持 Rust async/await
📦 安装
在您的 Cargo.toml 中添加以下依赖:
[]
= "0.1.0"
= { = "4.6", = ["debug_mode"] }
= { = "1.0", = ["derive"] }
🚀 快速开始
基础设置
use RBatis;
use QueryWrapper;
use ;
// 初始化 RBatis 实例
static RB: = new;
基础查询
// 查询单个记录
let user = new
.eq
.
.await?;
// 查询多个记录
let users = new
.gt
.like
.order_by // true 为升序
.
.await?;
条件查询
let users = new
.eq // 等于
.ne // 不等于
.gt // 大于
.lt // 小于
.like // LIKE 模糊查询
.
.await?;
分页查询
let page_result = new
.eq
.order_by // 按创建时间降序
. // 第1页,每页10条
.await?;
println!;
println!;
println!;
println!;
指定查询字段
let users = new
.select
.eq
.
.await?;
JOIN 查询
let results = new
.inner_join
.left_join
.eq
.
.await?;
自定义 SQL
// 自定义查询
let users = new
.custom_sql
.eq // 会自动添加到 WHERE 条件
.
.await?;
// 统计查询
let count = new
.custom_sql
.eq
.
.await?;
复杂查询示例
// 复合条件查询
let mut wrapper = new;
wrapper
.limit
.offset;
let users = wrapper
.eq
.gt
.order_by
.
.await?;
📖 API 文档
QueryWrapper 方法
| 方法 | 描述 | 示例 |
|---|---|---|
new() |
创建新的查询构建器 | QueryWrapper::new() |
eq(column, value) |
等于条件 | .eq("id", 1) |
ne(column, value) |
不等于条件 | .ne("status", 0) |
gt(column, value) |
大于条件 | .gt("age", 18) |
lt(column, value) |
小于条件 | .lt("price", 100) |
like(column, value) |
LIKE 模糊查询 | .like("name", "张") |
select(columns) |
指定查询字段 | .select(vec!["id", "name"]) |
order_by(column, asc) |
排序 | .order_by("created_at", false) |
limit(size) |
限制记录数 | .limit(10) |
offset(size) |
偏移量 | .offset(20) |
inner_join(table, on) |
内连接 | .inner_join("profiles", "users.id = profiles.user_id") |
left_join(table, on) |
左连接 | .left_join("orders", "users.id = orders.user_id") |
right_join(table, on) |
右连接 | .right_join("departments", "users.dept_id = departments.id") |
custom_sql(sql) |
自定义SQL | .custom_sql("SELECT * FROM complex_view") |
query<T>(rb, table) |
执行查询 | .query::<User>(&RB, "users") |
get_one<T>(rb, table) |
查询单条记录 | .get_one::<User>(&RB, "users") |
page<T>(rb, table, page_no, page_size) |
分页查询 | .page::<User>(&RB, "users", 1, 10) |
Page 结构体
🤝 贡献
欢迎提交 Issue 和 Pull Request!
- Fork 本项目
- 创建您的特性分支 (
git checkout -b feature/AmazingFeature) - 提交您的修改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启一个 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
🙏 致谢
- rbatis - 优秀的 Rust ORM 框架
- MyBatis Plus - API 设计灵感来源