欢迎光临,我们是一家专注中小型企业营销推广服务的公司!

咨询热线:400 9868 577
淮南兰乔电子商务有限公司
新闻中心News
淮南兰乔电子商务有限公司

2026 最好用的 ORM 框架:xbatis 1.9.7 正式发布,基于 mybatis 的 ORM 框架

作者:心靈之曲 | 点击: | 来源:心靈之曲
2001
2026
1.9.7版本更新日志1:VO字段注解现支持通过set方法上的注解覆盖默认行为2:数据库类型适配能力增强,新增对自定义DbType的全面支持3:getById方法扩展,新增getOptionalById方法,返回Optional类型结果4:QueryChain新增Optional相关方法,与get()方法形成配套支持5:内置UUIDv7主键生成策略,满足高性能、时序安全的主键需求1.8.7版本更新日志:1:为提升JAVA...

1.9.7 版本更新日志

  • 1:VO 字段注解现支持通过 set 方法上的注解覆盖默认行为
  • 2:数据库类型适配能力增强,新增对自定义 DbType 的全面支持
  • 3:getById 方法扩展,新增 getOptionalById 方法,返回 Optional<t></t> 类型结果
  • 4:QueryChain 新增 Optional 相关方法,与 get() 方法形成配套支持
  • 5:内置 UUIDv7 主键生成策略,满足高性能、时序安全的主键需求

1.8.7 版本更新日志:

1:为提升 java 与 xml 协同开发体验,querywhere 模块新增 tableas(实体类, 别名) 方法,支持灵活指定表别名

2:配置类 XbatisConfig 已重命名为 XbatisGlobalConfig,语义更清晰、结构更统一

3:新增逻辑删除全局拦截器,开箱即用,无需手动编写删除标记逻辑

4:updatedelete 操作支持原生 RETURNING 子句(数据库原生语法),直接获取变更数据

5:新增原生 SQL 查询接口,并同步支持 update/delete RETURNING 功能

6:引入通用 Mapper 方法拦截器机制,便于统一处理执行前/后逻辑

7:简化 exists / not exists 场景写法,提供更直观的链式调用支持

通用 SQL 扩展能力:

// 支持任意类型:实体类、VO 或普通 POJO  
SysUser user = sysUserMapper.select(SysUser.class, "select * from t_sys_user where id =?", 1);  
<p>// 支持增删改操作,并可返回指定字段值(如更新后的新用户名)<br>
String user_name = sysUserMapper.executeAndReturning(String.class, "update t_sys_user set user_name=? where id=1 RETURNING user_name", "xxx");  </p><p>// ORM 风格:删除并返回被删记录(基于数据库原生 RETURNING)<br>
List<SysUser> list = DeleteChain.of(sysUserMapper)<br>
.in(SysUser::getId, 1, 2)<br>
.returning(SysUser.class)<br>
.returnType(SysUser.class)<br>
.executeAndReturningList();  </p><p>// ORM 风格:更新并返回更新后的完整对象(适用于金额加减等需确认结果场景)<br>
SysUser sysUser = UpdateChain.of(sysUserMapper)<br>
.eq(SysUser::getId, 1)<br>
.set(SysUser::getUserName, "abc2")<br>
.returning(SysUser.class)<br>
.returnType(SysUser.class)<br>
.executeAndReturning();</p>

分表配置示例:

@Data<br>
@SplitTable(SysUserSplitter.class)<br>
public class SysUser {<br>
@TableId<br>
private Integer id;<br>
@SplitTableKey<br>
private Integer groupId;<br>
private String nickname;<br>
private String username;<br>
}
public class SysUserSplitter implements TableSplitter {<br>
@Override<br>
public boolean support(Class<?> type) {<br>
return type =

= Integer.class || type == int.class;<br> } <pre class="brush:php;toolbar:false;">@Override public String split(String sourceTableName, Object splitValue) { Integer groupId = (Integer) splitValue; // 按 groupId 取模分 10 张子表 return sourceTableName + "_" + (groupId % 10); }

}

分表逻辑简洁明了,其余 CRUD 操作完全透明,与单表无异!!!

1.7.7 版本更新日志:

  • 1:QueryChainDeleteChainInsertChainUpdateChain 全面兼容 BasicMapper 接口方法
  • 2:正式支持泛型 BasicMapper,无需为每个实体单独定义 Mapper 接口;一套 BasicMapper 即可驱动全部功能!
  • 3:全面支持单 Mapper 架构,仅需定义一个 Mapper 接口即可完成所有数据操作

为何推荐 xbatis?:

xbatis 是一款兼具强大性与易用性的新一代 ORM 框架 1:原生支持多表 JOIN 查询(彻底告别单表限制) 2:同时支持代码级分页与 XML 级分页(无需依赖 PageHelper 等第三方插件) 3:卓越的可扩展性:融合 ORM + SQL 模板双模式(打破传统 ORM 固化瓶颈,扩展自由度极高) 4:深度数据库兼容能力:同一套代码可无缝切换多种数据库(连 Hibernate 都难以做到的跨库一致性) 6:API 设计极度精简,上手零门槛,开发者无需反复查阅文档
  1. 单表 + @Fetch 注解 + fetchFilter 方法

@Data<br>
@ResultEntity(SysUser.class)<br>
public class SysUserVo {<br>
private Integer id;<br>
private String userName;<br>
private String password;<br>
private Integer roleId;<br>
private LocalDateTime create_time;<br>
@Fetch(source = SysUser.class, property = "roleId", target = SysRole.class, targetProperty = "id")<br>
private List<SysRoleVo> sysRoles;<br>
}
List<SysUserVo> list = QueryChain.of(sysUserMapper)<br>
.from(SysUser.class)<br>
.fetchFilter(SysUserVO::getRoles, where -> where.eq(SysRole::getStatus, 1))<br>
.returnType(SysUserVO.class)<br>
.list();

fetchFilter 是对 @Fetch 的增强补充,常规场景下可忽略使用

  1. 单表查询示例

SysUser sysUser = QueryChain.of(sysUserMapper)<br>
.eq(SysUser::getId, 1)<br>
.eq(SysUser::getUserName, "admin")<br>
.get();
  1. VO 映射能力

@Data<br>
@ResultEntity(SysUser.class)<br>
public class SysUserVo {<br>
private Integer id;<br>
private String userName;<br>
// 字段名不一致时通过注解映射<br>
@ResultEntityField(property = "password")<br>
private String pwd;<br>
}
SysUserVO sysUserVO = QueryChain.of(sysUserMapper)<br>
.eq(SysUser::getId, 1)<br>
.eq(SysUser::getUserName, "admin")<br>
.returnType(SysUserVO.class)<br>
.get();
  1. JOIN 查询支持

@Data<br>
@ResultEntity(SysUser.class)<br>
public class SysUserVo {<br>
private Integer id;<br>
private String userName;<br>
// 字段名不一致时映射<br>
@ResultEntityField(property = "password")<br>
private String pwd;  <pre class="brush:php;toolbar:false;">// 一对一嵌套映射  
@NestedResultEntity(target = SysRole.class)  
private SysRole sysRole;  

// 一对多嵌套映射  
@NestedResultEntity(target = SysRole.class)  
private List<SysRole> sysRoles;  

}

List<SysUserRoleVO> list = QueryChain.of(sysUserMapper)<br>
.from(SysUser.class)<br>
.join(SysUser.class, SysRole.class)<br>
.returnType(SysUserRoleVO.class)<br>
.list();

更多高效、灵活、有趣的用法持续上线中,欢迎访问官网体验 ? https://www./link/c0fd33132cf60f26b36f3e719c407beb

例如:

  1. 支持深层嵌套 JOIN:A → B → C 多层关联一键搞定
  1. 不依赖 JOIN:通过 @Fetch + fetchFilter 实现“A 查一次 + B 查一次”的优雅替代方案
  1. XML 分页自动化:添加 @Paging 注解,XML 中自动注入分页逻辑
  1. SQL 模板加持:让 ORM 更贴近业务,轻松应对复杂 SQL 场景,彻底摆脱框架束缚

源码地址:点击下载

相关推荐
我要咨询做网站
成功案例
建站流程
  • 网站需
    求分析
  • 网站策
    划方案
  • 页面风
    格设计
  • 程序设
    计研发
  • 资料录
    入优化
  • 确认交
    付使用
  • 后续跟
    踪服务
  • 400 9868 577
    info#ilanqiao.cn
Hi,Are you ready?
准备好开始了吗?
那就与我们取得联系吧

咨询送礼现在提交,将获得兰乔电子商务策划专家免费为您制作
价值5880元《全网营销方案+优化视频教程》一份!
下单送礼感恩七周年,新老用户下单即送创业型空间+域名等大礼
24小时免费咨询热线400 9868 577
合作意向表
您需要的服务
您最关注的地方
预算

直接咨询