🚀 xbatis:从新定义 MyBatis 开辟体验
写在前面
还在为繁琐的 MyBatis XML 设备而懊末路吗?还在为 SQL 注入风险而担心吗?xbatis 横空出世,让 Java 数据库开辟再次变得优雅!
💡 为什么选择 xbatis?
🎯 三大年夜核心价值
少写 SQL - 链式 DSL 让代码如诗如画 1
// 拜别 XML,拥抱类型安然List users = QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .like(SysUser::getUserName, "admin") .forSearch(true) .list();
// 多表接洽关系、分组统计、子查询,一行搞定SysUserRoleVo vo = QueryChain.of(sysUserMapper) .select(SysUser.class, SysRole.class) .from(SysUser.class) .join(SysUser::getRoleId, SysRole::getId) .eq(SysUser::getId, 1) .groupBy(SysUser::getId) .having(SysUser::getId, c -> c.count().gt(0)) .returnType(SysUserRoleVo.class) .get();
支撑 MySQL、PostgreSQL、Oracle、SQL Server、达梦、人大年夜金仓等 12+ 数据库!
🚀 五大年夜杀手级特点
1. 🤖 主动 SQL 优化
智能移除冗余 JOIN、优化 COUNT 查询、主动调剂 ORDER BY 4
零侵入设计 - 对 MyBatis 仅做封装,不修改核心 7
// 框架主动优化,机能晋升 30%+QueryChain.of(sysUserMapper) .select(SysUser::getId, SysUser::getUserName) .leftJoin(SysUser::getRoleId, SysRole::getId) // 未应用时主动移除 .count(); // 主动转换为 SELECT COUNT(*)
2. 🎯 单 Mapper 模式
跨数据库兼容 - 一套代码,处处运行 3
一个 BasicMapper 横跨全部实体,拜别接口爆炸 5
// 全项目只需一个 Mapper@Autowiredprivate MybatisBasicMapper mapper;// 通用 CRUD,类型安然mapper.save(new SysUser());mapper.deleteById(SysUser.class, 1);
3. ⚡ 内置 RETURNING 支撑
链路化 DSL - 复杂查询趁热打铁 2
更新删除即时返回,无需额外查询 6
// 删除并返回被删除的数据List removed = DeleteChain.of(sysUserMapper) .in(SysUser::getId, 1, 2) .returning(SysUser.class) .executeAndReturningList();
4. 🛡️ 企业级特点开箱即用
- 多租户隔离:
@TenantId主动过滤 - 逻辑删除:
@LogicDelete软删除支撑 - 乐不雅锁:
@Version防并发冲突 - 审计字段:
@OnInsert、@OnUpdate主动填充
5. 🔧 完美兼容现有项目
<!-- 只需调换依附,现有代码无需修改 --> cn.xbatis xbatis-spring-boot3-starter 1.9.3
📊 机能比较
特点 原生 MyBatis MyBatis-Plus xbatis 类型安然 ❌ ✅ ✅ 主动优化 ❌ ❌ ✅ 单 Mapper ❌ ❌ ✅ RETURNING ❌ 部分 ✅ 进修成本 中 中 低🎁 急速体验
快速开端
// 1. 实体类@Tablepublic class SysUser { @TableId private Integer id; private String userName;}// 2. Mapper 接口public interface SysUserMapper extends MybatisMapper {}// 3. 开端应用@Autowiredprivate SysUserMapper mapper;// 链式查询,优雅至极List users = QueryChain.of(mapper) .like(SysUser::getUserName, "admin") .list();
更多资本
- 🌐 官方网站:https://xbatis.cn
- 📚 具体文档:https://deepwiki.com/xbatis/xbatis
- 💻 Gitee 仓库:https://gitee.com/xbatis/xbatis
- 🔄 GitHub 镜像:https://github.com/xbatis/xbatis
🤝 参加我们
xbatis 正在快速成长,我们须要你的力量:
- 🐛 发明 Bug?提交 Issue 赞助改进
- 💡 有好设法主意?迎接提交 PR
- 📝 善于写作?供献文档和教程
- 🎤 酷爱分享?成为社区推广大年夜使
🔮 将来瞻望
- IDE 插件开辟中,智能提示即将到来
- 更多半据库适配器持续完美
- 企业级最佳实践案例集即将宣布
- 国际化社区扶植周全启动
xbatis 不只是一个框架,更是 Java 数据库开辟的将来!
急速体验 xbatis,让数据拜访再次变得简单而优雅! ⭐
Notes
- 文章凸起了 xbatis 的差别化优势,特别是主动 SQL 优化和单 Mapper 模式
- 应用了大年夜量实际代码示例,展示链式 DSL 的优雅性
- 强调了零侵入设计,降低用户迁徙成本
- 包含了完全的快速开端指南和资本链接
- 呼吁开辟者介入社区扶植,形成推广合力
File: README.zh-CN.md (L17-17)
- **定位**:xbatis 基于 MyBatis,实现高度 ORM 化的数据库操作体验,强调“少写 SQL、链路化 DSL、跨数据库兼容”。
Wiki pages you might want to explore:
- Overview (xbatis/xbatis)
Citations
File: README.zh-CN.md (L19-20)
- 多表接洽关系、子查询、链路分页、主动 SQL 优化(主动移除冗余 `LEFT JOIN`、`ORDER BY`,智能 `COUNT` 化简)。 - 内置 `RETURNING` 支撑、批量插入与批量更新链路、原生函数包装、SQL 模板。
File: README.zh-CN.md (L21-21)
- 单 Mapper 模式,支撑一个 `BasicMapper` 横跨全部实体。
File: README.zh-CN.md (L25-25)
1. 极致轻量:对 MyBatis 仅做封装而非侵入式改革。
File: README.zh-CN.md (L605-617)
```javaSysUserRoleVo vo = QueryChain.of(sysUserMapper) .select(SysUser.class, SysRole.class) .from(SysUser.class) .join(SysUser::getRoleId, SysRole::getId) .eq(SysUser::getId, 1) .like(SysUser::getUserName, "abc") .groupBy(SysUser::getId) .having(SysUser::getId, c -> c.count().gt(0)) .orderBy(SysUser::getId) .returnType(SysUserRoleVo.class) .get();

发表评论 取消回复