Xbatis多版本更新:新增功能、优化体验,多场景适配提升开发效率!

张开发
2026/4/15 22:46:52 15 分钟阅读

分享文章

Xbatis多版本更新:新增功能、优化体验,多场景适配提升开发效率!
Xbatis更新新增方法、优化功能多场景适配助力开发效率提升Xbatis作为一款超级强大的ORM框架不断进行版本更新为开发者带来更多便利。以下是各版本的更新内容1.9.9 - 2026-04-13更新- 增加partialUpdate精准(局部)修改方法详情见https://xbatis.cn/zh-CN/function/base/update.html#%E7%B2%BE%E5%87%86-%E5%B1%80%E9%83%A8-%E4%BF%AE%E6%94%B9。- 原生updateBatch修改增加null/默认值忽略设置方法详情见https://xbatis.cn/zh-CN/function/base/update.html#%E5%8E%9F%E7%94%9Fsql%E6%89%B9%E9%87%8F%E4%BF%AE%E6%94%B9-%E6%8C%87%E5%AE%9A%E4%BF%AE%E6%94%B9%E7%AD%96%E7%95%A5。- LambdaUtil类增加setter/getter Lambda生成方法。- ResultCalcField注解支持数据库函数详情见https://xbatis.cn/zh-CN/function/annotation/resultCalcField.html#%E9%85%8D%E7%BD%AE%E6%96%B9%E5%BC%8F%E4%BA%8Corm-%E5%87%BD%E6%95%B0。- 修复exists/notExists中子查询嵌套子查询时别名一致导致无法上下级引用的问题。- 增加join子查询的简化写法详情见https://xbatis.cn/zh-CN/function/base/join-query.html#join%E5%AD%90%E6%9F%A5%E8%AF%A2-%E6%96%B9%E5%BC%8F1-%E6%8E%A8%E8%8D%90。- 所有Mp开头的类改为Xbatis开头。- 优化selectIgnore功能不再要求先select。- 增加orderByAsc方法减少从mybatis-plus迁移到xbatis的工作量。- 优化底层代码。- 增加resultmap官方动态映射继承详情见https://xbatis.cn/zh-CN/intro/resultMapExtend.html#xml-resultmap-%E5%8A%A8%E6%80%81%E7%BB%A7%E6%89%BF%E5%AE%98%E6%96%B9%E9%85%8D%E7%BD%AE。- 所有查询完美兼容pageHelper。- 对于顶级类的字段增加列为为字段名的resultMap映射。- 支持多列in-notIn操作详情见https://xbatis.cn/zh-CN/demo/other-hard.html#%E5%A4%9A%E5%88%97in-notin%E6%9D%A1%E4%BB%B6。- Fetch支持合并查询从2层到1层转变减少VO创建详情见https://xbatis.cn/zh-CN/function/annotation/fetch.html#fetch-%E5%90%88%E5%B9%B6%E6%9F%A5%E8%AF%A2。1.8.7更新- 为了更好的JAVAXML结合query和where增加tableAs (实体类别名)方法用于自定义表名别名。- XbatisConfig改为XbatisGlobalConfig。- 增加逻辑删除拦截器详情见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。- 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%252Fbase%252Fupdate.html和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。- 增加原生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。- 增加了一个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。- 增加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示例代码如下java //类型支持 实体类VO和普通POJO SysUser user sysUserMapper.select(SysUser.class, select * from t_sys_user where id ?, 1);- 支持增删改且支持返回数据示例代码如下java //支持增删改且支持返回数据 String user_name sysUserMapper.executeAndReturning(String.class, update t_sys_user set user_name? where id1 RETURNING user_name, xxx);- ORM写法 删除并返回被删除的数据数据库原生操作示例代码如下java //ORM写法 删除并返回被删除的数据数据库原生操作 List list DeleteChain.of(sysUserMapper) .in(SysUser::getId, 1, 2) .returning(SysUser.class) .returnType(SysUser.class) .executeAndReturningList();- ORM写法 修改并返回修改后的数据数据库原生操作适合金额加减操作返回剩余金额示例代码如下java //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) public class SysUser { TableId private Integer id; SplitTableKey private Integer groupId; private String nickname; private String username; }java public class SysUserSplitter implements TableSplitter { Override public boolean support(Class type) { return type Integer.class || type int.class; } Override public String split(String sourceTableName, Object splitValue) { Integer groupId (Integer) splitValue; //分成10个表 return sourceTableName _ groupId % 10; } }分表就是这么简单其他操作和常规无异1.7.7更新- QueryChain,DeleteChain,InsertChain,UpdateChain支持BasicMapper方法。- 支持通用BasicMapper可不需要创建多个实体类Mapper一个BasicMapper即可使用所有功能。- 正式支持单Mapper (写一个Mapper即可)。为什么推荐xbatis- 可多表join不再只能单表了。- 代码分页xml还可以分页可以不用pagehelper了。- 良好的扩展能力ormsql模板 让ORM框架不再死板扩展性极强。- 强大的各种数据库适配可在一套代码中 实现多个数据库适配真正的ORM hibernate都做不到。- 极简的api设计让开发者 不再迷糊。多种查询示例1. 单表 Fetch注解 fetchFilter方法java Data ResultEntity(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; }java List list QueryChain.of(sysUserMapper) .from(SysUser.class) .fetchFilter(SysUserVO::getRoles,where-where.eq(SysRole::getStatus,1)) .returnType(SysUserVO.class) .list();fetchFilter方法是对Fetch注解的增强没有特殊要求一般可忽略。2. 单表查询java SysUser sysUser QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .eq(SysUser::getUserName,admin) .get();3. VO映射java Data ResultEntity(SysUser.class) public class SysUserVo { private Integer id; private String userName; //字段名字不一样时 ResultEntityField(property password) private String pwd; }java SysUserVO sysUserVO QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .eq(SysUser::getUserName,admin) .returnType(SysUserVO.class) .list();4. join查询java Data ResultEntity(SysUser.class) public class SysUserVo { private Integer id; private String userName; //字段名字不一样时 ResultEntityField(property password) private String pwd; //映射一个对象 1对1 NestedResultEntity(target SysRole.class) private SysRole sysRole; //映射多个对象 1对多 NestedResultEntity(target SysRole.class) private List sysRoles; }java List list QueryChain.of(sysUserMapper) .from(SysUser.class) .join(SysUser.class, SysRole.class) .returnType(SysUserRoleVO.class) .list();还有很多很多超级方便有趣的写法欢迎大家来使用https://xbatis.cn。例如- 多表join A内嵌B B内嵌C都可以。- 不使用join使用Fetch注解 fetchFilter方法实现 将A JOIN B变成query A query B。- 使用Paging注解 实现你的xml自动分页。- 使用SQL模板让你ORM更简单更容易扩展再也不怕被框架限制了。

更多文章