[特殊字符] xbatis:重新定义 MyBatis 开发体验

🚀 xbatis:重新定义 MyBatis 开发体验

写在前面

还在为繁琐的 MyBatis XML 配置而烦恼吗?还在为 SQL 注入风险而担忧吗?xbatis 横空出世,让 Java 数据库开发再次变得优雅!


💡 为什么选择 xbatis?

🎯 三大核心价值

少写 SQL - 链式 DSL 让代码如诗如画 1

java 复制代码
// 告别 XML,拥抱类型安全
List<SysUser> users = QueryChain.of(sysUserMapper)
    .eq(SysUser::getId, 1)
    .like(SysUser::getUserName, "admin")
    .forSearch(true)
    .list();

链路化 DSL - 复杂查询一气呵成 2

java 复制代码
// 多表关联、分组统计、子查询,一行搞定
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();

跨数据库兼容 - 一套代码,处处运行 3

支持 MySQL、PostgreSQL、Oracle、SQL Server、达梦、人大金仓等 12+ 数据库!


🚀 五大杀手级特性

1. 🤖 自动 SQL 优化

智能移除冗余 JOIN、优化 COUNT 查询、自动调整 ORDER BY 4

java 复制代码
// 框架自动优化,性能提升 30%+
QueryChain.of(sysUserMapper)
    .select(SysUser::getId, SysUser::getUserName)
    .leftJoin(SysUser::getRoleId, SysRole::getId)  // 未使用时自动移除
    .count();  // 自动转换为 SELECT COUNT(*)

2. 🎯 单 Mapper 模式

一个 BasicMapper 横跨全部实体,告别接口爆炸 5

java 复制代码
// 全项目只需一个 Mapper
@Autowired
private MybatisBasicMapper mapper;

// 通用 CRUD,类型安全
mapper.save(new SysUser());
mapper.deleteById(SysUser.class, 1);

3. ⚡ 内置 RETURNING 支持

更新删除即时返回,无需额外查询 6

java 复制代码
// 删除并返回被删除的数据
List<SysUser> removed = DeleteChain.of(sysUserMapper)
    .in(SysUser::getId, 1, 2)
    .returning(SysUser.class)
    .executeAndReturningList();

4. 🛡️ 企业级特性开箱即用

  • 多租户隔离:@TenantId 自动过滤
  • 逻辑删除:@LogicDelete 软删除支持
  • 乐观锁:@Version 防并发冲突
  • 审计字段:@OnInsert@OnUpdate 自动填充

5. 🔧 完美兼容现有项目

零侵入设计 - 对 MyBatis 仅做封装,不修改核心 7

xml 复制代码
<!-- 只需替换依赖,现有代码无需改动 -->
<dependency>
    <groupId>cn.xbatis</groupId>
    <artifactId>xbatis-spring-boot3-starter</artifactId>
    <version>1.9.3</version>
</dependency>

📊 性能对比

特性 原生 MyBatis MyBatis-Plus xbatis
类型安全
自动优化
单 Mapper
RETURNING 部分
学习成本

🎁 立即体验

快速开始

java 复制代码
// 1. 实体类
@Table
public class SysUser {
    @TableId
    private Integer id;
    private String userName;
}

// 2. Mapper 接口
public interface SysUserMapper extends MybatisMapper<SysUser> {}

// 3. 开始使用
@Autowired
private SysUserMapper mapper;

// 链式查询,优雅至极
List<SysUser> users = QueryChain.of(mapper)
    .like(SysUser::getUserName, "admin")
    .list();

更多资源


🤝 加入我们

xbatis 正在快速发展,我们需要你的力量:

  • 🐛 发现 Bug?提交 Issue 帮助改进
  • 💡 有好想法?欢迎提交 PR
  • 📝 善于写作?贡献文档和教程
  • 🎤 热爱分享?成为社区推广大使

🔮 未来展望

  • IDE 插件开发中,智能提示即将到来
  • 更多数据库适配器持续完善
  • 企业级最佳实践案例集即将发布
  • 国际化社区建设全面启动

xbatis 不只是一个框架,更是 Java 数据库开发的未来!


立即体验 xbatis,让数据访问再次变得简单而优雅!

Notes

  • 文章突出了 xbatis 的差异化优势,特别是自动 SQL 优化和单 Mapper 模式
  • 使用了大量实际代码示例,展示链式 DSL 的优雅性
  • 强调了零侵入设计,降低用户迁移成本
  • 包含了完整的快速开始指南和资源链接
  • 呼吁开发者参与社区建设,形成推广合力

Wiki pages you might want to explore:

Citations

File: README.zh-CN.md (L17-17)

markdown 复制代码
- **定位**:xbatis 基于 MyBatis,实现高度 ORM 化的数据库操作体验,强调"少写 SQL、链路化 DSL、跨数据库兼容"。

File: README.zh-CN.md (L19-20)

markdown 复制代码
    - 多表关联、子查询、链路分页、自动 SQL 优化(自动移除冗余 `LEFT JOIN`、`ORDER BY`,智能 `COUNT` 化简)。
    - 内置 `RETURNING` 支持、批量插入与批量更新链路、原生函数包装、SQL 模板。

File: README.zh-CN.md (L21-21)

markdown 复制代码
    - 单 Mapper 模式,支持一个 `BasicMapper` 横跨全部实体。

File: README.zh-CN.md (L25-25)

markdown 复制代码
    1. 极致轻量:对 MyBatis 仅做封装而非侵入式改造。

File: README.zh-CN.md (L605-617)

markdown 复制代码
```java
SysUserRoleVo 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();
复制代码
相关推荐
期待のcode10 小时前
Springboot多数据源配置
java·数据库·spring boot·后端·mybatis
计算机学姐11 小时前
基于SSM的网上花店销售系统【2026最新】
java·vue.js·mysql·java-ee·tomcat·intellij-idea·mybatis
TimberWill12 小时前
Mybatis一、二级缓存解析
mybatis
期待のcode1 天前
Wrapper体系中的condition参数
java·spring boot·后端·mybatis
期待のcode1 天前
MyBatis-Plus的Wrapper核心体系
java·数据库·spring boot·后端·mybatis
期待のcode2 天前
Springboot数据层开发—Springboot整合JdbcTemplate和Mybatis
spring boot·后端·mybatis
在坚持一下我可没意见2 天前
Spring 开发小白学习过程中常用通用配置文件,即拿即用!(持续更新中)
java·数据库·后端·学习·spring·tomcat·mybatis
m0_740043732 天前
SpringBoot03-Mybatis框架入门
java·数据库·spring boot·sql·spring·mybatis
计算机学姐3 天前
基于SSM的生鲜食品商城系统【2026最新】
java·vue.js·后端·mysql·java-ee·tomcat·mybatis