🔥 xbatis ORM 框架 1.9.1-M12 发布,一款好用、简单、便捷的框架!!
1.9.1-M12 - 2025-10-16
- 1:修复对象转条件多表条件配置报异常问题
- 2:优化exists条件方法,更优雅
- 3:增加对象动态排序
- 4:修复oracle-batchSave原生批量会去重的问题
- 5:兼容PageHelper支持配合xbatis-lambda分页
- 6:新增mapWithKeyAndValue方法
- 7:统一查询结果为空时的List Map为可修改的List和Map
- 8:修改@Conditions注解逻辑默认为OR
- 9:注解@Fetch 增加memoryLimit,采用内存limit前几条
- 10:新增cross join支持
- 11:动态默认值增加强制设置配置
- 12:增加Mapper支持原生update批量修改支持
- 13: @ResultField注解支持多列名映射
- 14:SQL模板支持,特殊字符包裹(解决单引号的问题)
- 15:其他优化,增加更多条件开关方法
- 16:支持PG distinct on(xxx) 排重功能
- 17:支持表、列名全部大小写设置
- 18:Mapper方法拦截器支持官方自带方法拦截
- 19:对象转条件增加NOT/NULL 空/非空的功能
- 20:增加计算字段注解ResultCalcField,用于自动select计算字段,例如count,sum等等计算字段
- 21:其他优化
1.8.7 更新内容:
1:为了更好的 JAVA+XML 结合,query 和 where 增加 tableAs (实体类,别名) 方法,用于自定义表名别名
2:XbatisConfig 改为 XbatisGlobalConfig
3:增加逻辑删除拦截器
4:update delete 增加 原生 RETURNING (原生) 功能
5:增加原生 sql 查询方法和 update delete RETURNING 功能
6:增加了一个 Mapper 方法拦截器
通用 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 id=1 RETURNING user_name", "xxx");
//ORM写法 删除并返回被删除的数据(数据库原生操作)
List<SysUser> 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();
分表配置
@Data
@SplitTable(SysUserSplitter.class)
public class SysUser {
@TableId
private Integer id;
@SplitTableKey
private Integer groupId;
private String nickname;
private String username;
}
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 更新内容:
- 1:QueryChain,DeleteChain,InsertChain,UpdateChain 支持 BasicMapper 方法
- 2:支持通用 BasicMapper,可不需要创建多个实体类 Mapper;一个 BasicMapper 即可使用所有功能
- 3:正式支持单 Mapper (写一个 Mapper 即可)
为什么推荐 xbatis?:
xbatis 是一款超级强大的 ORM 框架
1:可多表 join(不再只能单表了)
2:代码分页,xml 还可以分页(可以不用 pagehelper 了)
3:良好的扩展能力:orm+sql 模板 (让 ORM 框架不再死板,扩展性极强)
4:强大的各种数据库适配,可在一套代码中 实现多个数据库适配;真正的 ORM hibernate 都做不到
6:极简的 api 设计,让开发者 不再迷糊
1. 单表 +@Fetch 注解 + fetchFilter 方法
@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<SysRoleVo> sysRoles;
}
List<SysUserVO> 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 映射
@Data
@ResultEntity(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 查询
@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)
prviate SysRole sysRole;
//映射多个对象 1对多
@NestedResultEntity(target = SysRole.class)
prviate List<SysRole> sysRoles;
}
List<SysUserRoleVO> list = QueryChain.of(sysUserMapper)
.from(SysUser.class)
.join(SysUser.class, SysRole.class)
.returnType(SysUserRoleVO.class)
.list();
还有很多很多超级方便有趣的写法,欢迎大家来使用 https://xbatis.cn
例如:
1 . 多表 join A 内嵌 B B 内嵌 C 都可以
2 . 不使用 join 使用 @Fetch 注解 + fetchFilter 方法实现 将 A JOIN B 变成 query A + query B
3 . 使用 @Paging 注解 实现你的 xml 自动分页
4 . 使用 SQL 模板,让你 ORM 更简单更容易扩展,再也不怕被框架限制了

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
LinkAndroid v1.0.0 正式版发布,布局调整设计,内置依赖,支持设备搜索
还在为安卓手机与电脑间的操作切换头疼不已?文件传输要靠数据线、网盘来回倒,应用管理得逐个手动操作,投屏要么卡顿要么画质模糊…… 这些日常困扰,终于有了完美解决方案! LinkAndroid一款专注于安卓与电脑无缝连接的工具,凭借投屏、文件管理、应用管理、一键截屏、高清录屏、批量安装应用等一站式功能,轻松打通设备壁垒,让跨设备操作更流畅,大幅提升工作与生活效率。 现在,我们激动地宣布, LinkAndroid v1.0.0新版正式发布啦,一起来看看都有哪些惊喜更新吧! LinkAndroid是一个全能手机连接助手,方便快捷的连接Android和电脑,连接手机后可投屏、 GIF/MP4录屏、截屏、文件管理、手机操作等功能。 功能特性 支持多手机连接,方便快捷控制多个手机 支持投屏,基于 scrcpy,支持手机操作 支持截屏,截屏后会自动打开截屏美化工具 支持 GIF/MP4录屏,支持录制手机屏幕为 GIF或MP4 支持应用管理,支持安装、卸载、启动应用 支持文件管理,支持文件上传、下载、删除 支持命令行,支持 adb、screen命令行和手机 shell命令行 支持国际化,支持简体中文、...
-
下一篇
NumPy 2.3.4 发布
NumPy 2.3.4 现已发布,这是一个补丁版本,包含一系列维护更新和错误修复。此版本支持 Python 3.11-3.14 版本。此版本基于 NumPy 3.14.0 最终版本。 Changes 在 win-arm64 平台上,setuptools和npyrandom库现采用.lib文件扩展名替代原有的.a扩展名,以确保与 MSVC 及setuptools的兼容性。注意,不建议使用这些静态库。对于现有项目,若需使用,最好将其与匹配的clang-cl编译器工具链一起使用,该工具链在 Windows on Arm上可用。(gh-29750) 此版本共合并了 30 个拉取请求。 #29725:MAINT:为 2.3.x 版本的后续开发做准备 #29781:MAINT:Pin 一些上游依赖项 #29783:BUG:优先包含 python-including headers(#29281) #29784:TYP:修复 np.number 和 np.*integer 方法声明 #29785:TYP:mypy 1.18.1 #29790:BUG:修复__array__中的dtyperefcoun...
相关文章
文章评论
共有0条评论来说两句吧...