新一代国产 ORM 框架,sagacity-sqltoy-5.2.42 发版
开源地址:
- github: https://github.com/sagframe/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
- idea 插件 (可直接在 idea 中检索安装): https://github.com/threefish/sqltoy-idea-plugins
更新内容
1、针对一个sql查询将结果封装成主子对象结构,实际join到的子对象数据为空的过滤,在注解中增加了notNullField 属性
/** * 主键关联子表信息,增加了notNullField 标记子表结果不为null的判断依据字段 */ @OneToMany(fields={"dictType"},mappedFields={"dictType"},delete=true,orderBy="showIndex desc",notNullField = "dictKey") private List<DictDetailVO> dictDetailVOs=new ArrayList<DictDetailVO>(); // 演示数据字典主表和数据字典子表一次查询完成主子对象模式返回 String sql = "select sdt.DICT_TYPE_NAME ,sdt.COMMENTS dictTypeComments, " + "sdt.status dictTypeStatus, sdd.*,sdd.STATUS dictStatus from sqltoy_dict_type sdt " + "left join sqltoy_dict_detail sdd on sdt.DICT_TYPE =sdd.DICT_TYPE and sdd.status=1 "; List<DictTypeVO> result = sqlToyLazyDao .findByQuery(new QueryExecutor(sql).resultType(DictTypeVO.class).hiberarchy(true) // 因存在主子表属性同名情况 // 将sql查询的结果label名称跟DictTypeVO实际对象属性对应 .hiberarchyFieldsMap(DictTypeVO.class, MapKit.keys("dictTypeComments", "dictTypeStatus").values("COMMENTS", "status")) // 将sql查询的结果label名称跟DictDetailVO实际对象属性对应 .hiberarchyFieldsMap(DictDetailVO.class, MapKit.keys("dictStatus").values("status"))) .getRows();
sqltoy 的关键优势:
//------------------了解 sqltoy的关键优势: -------------------------------------------------------------------------------------------*/ //1、最简最直观的sql编写方式(不仅仅是查询语句),采用条件参数前置处理规整法,让sql语句部分跟客户端保持高度一致 //2、sql中支持注释(规避了对hint特性的影响,知道hint吗?搜oracle hint),和动态更新加载,便于开发和后期维护整个过程的管理 //3、支持缓存翻译和反向缓存条件检索(通过缓存将名称匹配成精确的key),实现sql简化和性能大幅提升 //4、支持快速分页和分页优化功能,实现分页最高级别的优化,同时还考虑到了cte多个with as情况下的优化支持 //5、支持并行查询 //6、根本杜绝sql注入问题 //7、支持行列转换、分组汇总求平均、同比环比计算,在于用算法解决复杂sql,同时也解决了sql跨数据库问题 //8、支持保留字自动适配 //9、支持跨数据库函数自适配,从而非常有利于一套代码适应多种数据库便于产品化,比如oracle的nvl,当sql在mysql环境执行时自动替换为ifnull //10、支持分库分表 //11、提供了取top、取random记录、树形表结构构造和递归查询支持、updateFetch单次交互完成修改和查询等实用的功能 //12、sqltoy的update、save、saveAll、load 等crud操作规避了jpa的缺陷,参见update(entity,String...forceUpdateProps)和updateFetch //13、提供了极为人性化的条件处理:排它性条件、日期条件加减和提取月末月初处理等 //14、提供了查询结果日期、数字格式化、安全脱敏处理,让复杂的事情变得简单,大幅简化sql或结果的二次处理工作 //-----------------------------------------------------------------------------------*/
sqltoy 特点介绍:
- sqltoy 的核心构建思想
- sqltoy 的对比 mybatis (plus) 的核心点:查询语句编写、可阅读性、可维护性
- 对象化 crud 是基础,但 sqltoy 有针对性的改进:update、updateSaveFetch、updateFetch 等
- sqltoy 的缓存翻译,大幅减少表关联简化 sql,让你的查询性能成几何级提升
- 极致的分页,同样帮助你实现查询的性能大幅提升
- 快速分页:@fast () 实现先取单页数据然后再关联查询,极大提升速度
- 分页优化器:page-optimize 让分页查询由两次变成 1.3~1.5 次 (用缓存实现相同查询条件的总记录数量在一定周期内无需重复查询
- sqltoy 的分页取总记录的过程不是简单的 select count (1) from (原始 sql);而是智能判断是否变成:select count (1) from 'from 后语句 ', 并自动剔除最外层的 order by
- sqltoy 支持并行查询:parallel="true",同时查询总记录数和单页数据,大幅提升性能
- 便利的跨数据库统计计算:数据旋转
- 便利的跨数据库统计计算:无限极分组统计 (含汇总求平均)
- 便利的跨数据库统计计算:同比环比

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
CoSec v1.16.3 发布,基于 RBAC 和策略的多租户响应式安全框架
基于 RBAC 和策略的多租户响应式安全框架 更新内容(v1.16.3) 🎉 🎉 🎉 特性:新增GroupedRateLimiterConditionMatcher支持分组限流。 { "groupedRateLimiter": { "part": "request.remoteIp", "permitsPerSecond": 10, "expireAfterAccessSecond": 1000 } } 特性:Policy/AppPermission支持顶级Condition,降低重复配置 重构:重构角色权限策略,提升易用性 { "id": "manage", "condition": { "bool": { "and": [ { "authenticated": {} }, { "groupedRateLimiter": { "part": "request.remoteIp", "permitsPerSecond": 10, "expireAfterAccessSecond": 1000 } } ] } }, "grou...
- 下一篇
layui-vue 1.9.6 发布,一个 Vue 3 UI 框架
更新内容: [新增] volar 支持,提供 components.ts 配置文件,为 volar 的自动提示功能提供支持。 [优化] sub-menu 组件 id 属性为非必填,常用于静态展示,不需要 id 属性完成联动的场景。 [优化] menu-item 组件 id 属性为非必填,常用于静态展示,不需要 id 属性来完成联动的场景。 [优化] table 组件 selectedKeys 与 expandKeys 属性,由 Recordable[] 修改为 string[] 类型。 [修复] tree-select 组件 modelValue / v-model 属性为空,input 组件回显不更新的问题。 [修复] autocomplete 组件 size 属性必填导致的控制台警告,调整该属性为非必填。 [修复] tree-select 组件 multiple 属性启用时,v-model / modelValue 不支持 null 值的问题。 [修复] select 组件 multiple 属性启用时, v-model / modelValue 不支持 null 值的问题。 重点...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 2048小游戏-低调大师作品
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G