Xbatis 1.7.7 - 1.10.6 版本更新:少写 1/3 - 2/3 持久层代码,API 简单快捷!
推荐理由强、强、强 单表连表不想连表让你直接少写 1/3 甚至 2/3 的持久层代码API 简单 快捷 优雅 简洁 构建 SQL 非常强用过的、没用过的都来体验虽然有 AI 了但是真正好用的 ORM 的还不能忽略的除非你以后不维护。1.10.6 - 2026-07-021新增 COALESCE 函数2新增 [Map 结果 强制包含 value 为 null 的 key](https://xbatis.cn/zh-CN/function/core/QueryChain.html#returnmap-%E6%98%A0%E5%B0%84map%E7%B1%BB)3新增 [Map key 下划线转驼峰处理](https://xbatis.cn/zh-CN/function/core/QueryChain.html#returnmap-%E6%98%A0%E5%B0%84map%E7%B1%BB)4新增 [DDL 自动化自动建表、索引、列新增、序列](https://xbatis.cn/zh-CN/function/core/ddlAuto.html)1.10.5 - 2026-06-211修复插入数据时未拼上 Table 的 schema 的问题2增加[局部某个表 leftJoin 禁止优化](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Fintro%2Fsql-optimize.html%23%25E5%25A6%2582%25E6%259E%259C%25E5%25A6%2582%25E4%25BD%2595%25E5%2585%25B3%25E9%2597%25AD-sql%25E4%25BC%2598%25E5%258C%2596)的功能3其他优化4增加 [SQL 审计](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fcore%2Faudit.html)1.10.3 - 2026-05-271[Fetch fetchFilter 强制调用开关](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fannotation%2Ffetch.html%23%25E5%25B1%259E%25E6%2580%25A7%25E8%25AF%25B4%25E6%2598%258E)2数据库识别支持 p6spy jdbc url 格式3[其他优化 表名 /schema 支持动态设置](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fannotation%2Ftable.html%23_4%25E8%25A1%25A8%25E5%2590%258Dschema-%25E5%258A%25A8%25E6%2580%2581%25E8%25AE%25BE%25E7%25BD%25AE%25E9%259D%259E%25E5%2588%2586%25E8%25A1%25A8%25E8%25A1%258C%25E4%25B8%25BA)非分表行为4crud 支持自己创建的 lambda getter 方法引用例如: .eq(EntityLambdaUtil.createSetter(SysUser.class, id), 1)5修复单列 Fetch 数据库为 null 时运行异常的问题6[增加 nested 方法来替代 orNested 和 andNested](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fcore%2FQueryChain.html%23and-%25E6%2588%2596-or-%25E4%25B8%2580%25E4%25B8%25AA%25E5%25AD%2590%25E6%259D%25A1%25E4%25BB%25B6)7[增加 where 方法平替 and or 动态方法](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fcore%2FQueryChain.html%23%25E5%258A%25A8%25E6%2580%2581%25E6%259D%25A1%25E4%25BB%25B6)8[新增 getValueById (获取单列值) 方法](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fbase%2Fget-query.html%23mapper-%25E5%2586%2585%25E7%25BD%25AE%25E6%2596%25B9%25E6%25B3%2595)9[QueryChain 增加 mapGroupWithKey 分组功能](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fbase%2FmapWithKey-query.html%23mapper-%25E5%2586%2585%25E7%25BD%25AE%25E6%2596%25B9%25E6%25B3%2595)1.10.2 - 2026-04-291[实现 Fetch, 支持生效条件](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fannotation%2Ffetch.html%23fetch-%25E7%2594%259F%25E6%2595%2588%25E6%259D%25A1%25E4%25BB%25B6)2in/notIn 单条时变成 eq/ne 行为3其他优化1.10.1 - 2026-04-271: 优化 Fetch 功能代码2[实现 Fetch 更多合并的功能场景](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fannotation%2Ffetch.html%23fetch-%25E5%2590%2588%25E5%25B9%25B6%25E6%259F%25A5%25E8%25AF%25A2)从 2 层到 1 层转变减少 VO 创建3[Fetch 注解增加逻辑删除策略支持忽略逻辑删除](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fannotation%2Ffetch.html%23%25E5%25B1%259E%25E6%2580%25A7%25E8%25AF%25B4%25E6%2598%258E)1.10.0 - 2026-04-181修复主动调用了 fetchFilter/fetchEnable 时可能出现报错的问题未使用 fetchFilter/fetchEnable 的不影响1.9.9 - 2026-04-131[增加 partialUpdate 精准 (局部) 修改方法](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fbase%2Fupdate.html%23%25E7%25B2%25BE%25E5%2587%2586-%25E5%25B1%2580%25E9%2583%25A8-%25E4%25BF%25AE%25E6%2594%25B9)2[原生 updateBatch 修改增加 null / 默认值忽略设置方法](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fbase%2Fupdate.html%23%25E5%258E%259F%25E7%2594%259Fsql%25E6%2589%25B9%25E9%2587%258F%25E4%25BF%25AE%25E6%2594%25B9-%25E6%258C%2587%25E5%25AE%259A%25E4%25BF%25AE%25E6%2594%25B9%25E7%25AD%2596%25E7%2595%25A5)3LambdaUtil 类增加 setter/getter Lambda 生成方法4[ResultCalcField 注解支持数据库函数](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fannotation%2FresultCalcField.html%23%25E9%2585%258D%25E7%25BD%25AE%25E6%2596%25B9%25E5%25BC%258F%25E4%25BA%258Corm-%25E5%2587%25BD%25E6%2595%25B0)5修复 exists/notExists 中子查询嵌套子查询时别名一致导致无法上下级引用的问题6增加 [join 子查询的简化写法](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fbase%2Fjoin-query.html%23join%25E5%25AD%2590%25E6%259F%25A5%25E8%25AF%25A2-%25E6%2596%25B9%25E5%25BC%258F1-%25E6%258E%25A8%25E8%258D%2590)7所有 Mp 开头的类 改为 Xbatis 开头8优化 selectIgnore 功能不再要求先 select9增加 orderByAsc 方法减少从 mybatis-plus 迁移到 xbatis 的工作量10优化底层代码11[增加 resultmap 官方动态映射继承](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Fintro%2FresultMapExtend.html%23xml-resultmap-%25E5%258A%25A8%25E6%2580%2581%25E7%25BB%25A7%25E6%2589%25BF%25E5%25AE%2598%25E6%2596%25B9%25E9%2585%258D%25E7%25BD%25AE)12所有查询完美兼容 pageHelper13对于顶级类的字段增加列为为字段名的 resultMap 映射14支持[多列 in-notIn 操作](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Fdemo%2Fother-hard.html%23%25E5%25A4%259A%25E5%2588%2597in-notin%25E6%259D%25A1%25E4%25BB%25B6)15[Fetch 支持合并查询](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fxbatis.cn%2Fzh-CN%2Ffunction%2Fannotation%2Ffetch.html%23fetch-%25E5%2590%2588%25E5%25B9%25B6%25E6%259F%25A5%25E8%25AF%25A2)从 2 层到 1 层转变减少 VO 创建1.8.7 更新内容1为了更好的 JAVAXML 结合query 和 where 增加 tableAs (实体类别名) 方法用于自定义表名别名2XbatisConfig 改为 XbatisGlobalConfig3增加[逻辑删除拦截器](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fxbatis.cn%252Fzh-CN%252Ffunction%252Fcore%252FlogicDelete.html)4[update](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fxbatis.cn%252Fzh-CN%252Ffunction%252Fbase%252Fupdate.html) [delete](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fxbatis.cn%252Fzh-CN%252Ffunction%252Fbase%252Fdelete.html) 增加 原生 RETURNING (原生) 功能5增加原生 sql 查询方法和 [update delete RETURNING 功能](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fxbatis.cn%252Fzh-CN%252Ffunction%252Fcore%252FnativeSQL.html)6增加了一个 [Mapper 方法拦截器](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fxbatis.cn%252Fzh-CN%252Ffunction%252Fcore%252FmethodInterceptor.html)7增加 [exists/not exists 简易写法](https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fwww.oschina.net%2Faction%2FGoToLink%3Furl%3Dhttps%253A%252F%252Fxbatis.cn%252Fzh-CN%252Fdemo%252Fother-hard.html%2523exists)通用 SQL 扩展_//类型支持 实体类VO 和普通 POJO_SysUser 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();分表配置DataSplitTable(SysUserSplitter.class)public class SysUser {TableIdprivate Integer id;SplitTableKeyprivate Integer groupId;private String nickname;private String username;}public class SysUserSplitter implements TableSplitter {Overridepublic boolean support (Class type) {return type Integer.class || type int.class;}Overridepublic String split (String sourceTableName, Object splitValue) {Integer groupId (Integer) splitValue;_//分成 10 个表_return sourceTableName _ groupId % 10;}}分表就是这么简单其他操作和常规无异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 方法DataResultEntity(SysUser.class) public class SysUserVo {private Integer id;private String userName;private String password;private Integer roleId;private LocalDateTime create_time;Fetch(source SysUser.class, property roleId, target SysRole.class, targetProperty id)private List sysRoles;}List list QueryChain.of(sysUserMapper).from(SysUser.class).fetchFilter(SysUserVO::getRoles,where-where.eq(SysRole::getStatus,1)).returnType(SysUserVO.class).list();fetchFilter 方法是对 Fetch 注解的增强没有特殊要求一般可忽略2. 单表查询SysUser sysUser QueryChain.of(sysUserMapper).eq(SysUser::getId, 1).eq(SysUser::getUserName,admin).get();3.VO 映射DataResultEntity(SysUser.class) public class SysUserVo {private Integer id;private String userName;_//字段名字不一样时_ResultEntityField(property password)private String pwd;}SysUserVO sysUserVO QueryChain.of(sysUserMapper).eq(SysUser::getId, 1).eq(SysUser::getUserName,admin).returnType(SysUserVO.class).list();4. join 查询DataResultEntity(SysUser.class) public class SysUserVo {private Integer id;private String userName;_//字段名字不一样时_ResultEntityField(property password)private String pwd;_//映射一个对象 1 对 1_NestedResultEntity(target SysRole.class)prviate SysRole sysRole;_//映射多个对象 1 对多_NestedResultEntity(target SysRole.class)prviate List sysRoles;}List list QueryChain.of(sysUserMapper).from(SysUser.class).join(SysUser.class, SysRole.class).returnType(SysUserRoleVO.class).list();还有很多很多超级方便有趣的写法欢迎大家来使用例如1 . 多表 join A 内嵌 B B 内嵌 C 都可以2 . 不使用 join 使用 Fetch 注解 fetchFilter 方法实现 将 A JOIN B 变成 query A query B3 . 使用 Paging 注解 实现你的 xml 自动分页4 . 使用 SQL 模板让你 ORM 更简单更容易扩展再也不怕被框架限制了