1.9.9 - 2026-04-131增加 partialUpdate 精准 (局部) 修改方法2原生 updateBatch 修改增加 null / 默认值忽略设置方法3LambdaUtil 类增加 setter/getter Lambda 生成方法4ResultCalcField 注解支持数据库函数5修复 exists/notExists 中子查询嵌套子查询时别名一致导致无法上下级引用的问题6增加 join 子查询的简化写法7所有 Mp 开头的类 改为 Xbatis 开头8优化 selectIgnore 功能不再要求先 select9增加 orderByAsc 方法减少从 mybatis-plus 迁移到 xbatis 的工作量10优化底层代码11增加 resultmap 官方动态映射继承12所有查询完美兼容 pageHelper13对于顶级类的字段增加列为为字段名的 resultMap 映射14支持多列 in-notIn 操作15Fetch 支持合并查询从 2 层到 1 层转变减少 VO 创建1.8.7 更新内容1为了更好的 JAVAXML 结合query 和 where 增加 tableAs (实体类别名) 方法用于自定义表名别名2XbatisConfig 改为 XbatisGlobalConfig3增加逻辑删除拦截器4update delete 增加 原生 RETURNING (原生) 功能5增加原生 sql 查询方法和 update delete RETURNING 功能6增加了一个 Mapper 方法拦截器7增加 exists/not exists 简易写法通用 SQL 扩展//类型支持 实体类VO和普通POJOSysUser user sysUserMapper.select(SysUser.class, select * from t_sys_user where id ?, 1);//支持增删改且支持返回数据String user_name sysUserMapper.executeAndReturning(String.class, update t_sys_user set user_name? where id1 RETURNING user_name, xxx);//ORM写法 删除并返回被删除的数据数据库原生操作List list DeleteChain.of(sysUserMapper) .in(SysUser::getId, 1, 2) .returning(SysUser.class) .returnType(SysUser.class) .executeAndReturningList();//ORM写法 修改并返回修改后的数据数据库原生操作适合金额加减操作返回剩余金额SysUser sysUser UpdateChain.of(sysUserMapper) .eq(SysUser::getId, 1) .set(SysUser::getUserName, abc2) .returning(SysUser.class) .returnType(SysUser.class) .executeAndReturning();Java代码解读 复制代码展开代码 ▼分表配置Data SplitTable(SysUserSplitter.class)publicclassSysUser{ TableIdprivateInteger id; SplitTableKeyprivateInteger groupId;privateString nickname;privateString username; }Java代码解读 复制代码展开代码 ▼publicclassSysUserSplitterimplementsTableSplitter{ Overridepublicbooleansupport(Class type) {returntype Integer.class ** type int.class; } OverridepublicStringsplit(String sourceTableName, Object splitValue) { Integer groupId (Integer) splitValue;//分成10个表returnsourceTableName _ groupId % 10; } }Java代码解读 复制代码展开代码 ▼分表就是这么简单其他操作和常规无异1.7.7 更新内容1QueryChain,DeleteChain,InsertChain,UpdateChain 支持 BasicMapper 方法2支持通用 BasicMapper可不需要创建多个实体类 Mapper一个 BasicMapper 即可使用所有功能3正式支持单 Mapper (写一个 Mapper 即可)为什么推荐 xbatisxbatis 是一款超级强大的 ORM 框架1可多表 join不再只能单表了2代码分页xml 还可以分页可以不用 pagehelper 了3良好的扩展能力ormsql 模板 让 ORM 框架不再死板扩展性极强4强大的各种数据库适配可在一套代码中 实现多个数据库适配真正的 ORM hibernate 都做不到6极简的 api 设计让开发者 不再迷糊1. 单表 Fetch 注解 fetchFilter 方法Data ResultEntity(SysUser.class)publicclassSysUserVo{privateInteger id;privateString userName;privateString password;privateInteger roleId;privateLocalDateTime create_time; Fetch(source SysUser.class, property roleId, target SysRole.class, targetProperty id)privateList sysRoles; }Java代码解读 复制代码展开代码 ▼List list QueryChain.of(sysUserMapper) .from(SysUser.class) .fetchFilter(SysUserVO::getRoles,where-where.eq(SysRole::getStatus,1)) .returnType(SysUserVO.class) .list();Java代码解读 复制代码fetchFilter 方法是对 Fetch 注解的增强没有特殊要求一般可忽略2. 单表查询SysUser sysUser QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .eq(SysUser::getUserName,admin) .get();Java代码解读 复制代码3.VO 映射Data ResultEntity(SysUser.class)publicclassSysUserVo{privateInteger id;privateString userName;//字段名字不一样时ResultEntityField(property password)privateString pwd; }Java代码解读 复制代码展开代码 ▼SysUserVO sysUserVO QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .eq(SysUser::getUserName,admin) .returnType(SysUserVO.class) .list();Java代码解读 复制代码4. join 查询Data ResultEntity(SysUser.class)publicclassSysUserVo{privateInteger id;privateString userName;//字段名字不一样时ResultEntityField(property password)privateString pwd;//映射一个对象 1对1NestedResultEntity(target SysRole.class) prviate SysRole sysRole;//映射多个对象 1对多NestedResultEntity(target SysRole.class) prviate List sysRoles; }Java代码解读 复制代码展开代码 ▼List list QueryChain.of(sysUserMapper) .from(SysUser.class) .join(SysUser.class, SysRole.class) .returnType(SysUserRoleVO.class) .list();Java代码解读 复制代码还有很多很多超级方便有趣的写法欢迎大家来使用 https://xbatis.cn例如1 . 多表 join A 内嵌 B B 内嵌 C 都可以2 . 不使用 join 使用 Fetch 注解 fetchFilter 方法实现 将 A JOIN B 变成 query A query B3 . 使用 Paging 注解 实现你的 xml 自动分页4 . 使用 SQL 模板让你 ORM 更简单更容易扩展再也不怕被框架限制了