sqltoy-orm-5.0.0 发版,分享给大家最睿智的 ORM 框架!
-
写在开头
sagacity-sqltoy 是JPA+超强查询有机融合体,是个人长期项目实践的归纳总结,极为注重项目过程实践,尤其是项目痛点,如:sql注入、动态条件sql编写、树形结构查询、sql跨数据库、查询性能极致优化、极致的分页查询、涉及统计分析的行列转换、分组汇总计算等等,都有极为独特的解决策略!
感谢广大网络用户的支持和反馈,sagacity-sqltoy5.0 在拥有良好特性的基础上进一步完善了代码结构,必将更好的为大家的选择提供坚实的支撑!
-
开源地址:
- github: https://github.com/sagframe/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
- idea 插件(可直接在idea中检索安装): https://github.com/threefish/sqltoy-idea-plugins
-
更新内容
1. 规整4.x版本的代码目录,使其更加科学
- 去除executor目录,将QueryExecutor 对外的模型统一移入model目录下面
- 将非对外的内部模型移入到model.inner 包下面,将一些配置化的模型移入到config.model下面
2. 将PaginationModel 改为Page,并将PageNo 由Long改为long,避免需要写1L,简化书写
3. 优化support下面的LinkSupport,BaseSupport
- 剔除掉LinkSupport和BaseSupport,合并到SqlToyDaoSupport
4. 去除一些根本用不到的方法,避免产生疑问和混淆,使得SqlToyDao更加清晰
- 去除updateFetchTop、updateFetchRandom
- 去除:public Long executeSql(String sqlOrNamedSql, Serializable entity, ReflectPropsHandler reflectPropertyHandler)带有reflectPropertyHandler 的开放方法
5. 去除@ListSql @PageSql @LoadSql 这些注解,尽量让使用方法归一
6. 去除ObtainDataSource,避免跟DataSourceSelector产生功能重叠
7. 将ConnectonFactory移入org.sagacity.sqltoy.plugins.datasource包下
8. 剔除findAll方法,用findEntity(Class voClass,null) 代替findAll方法属于极小众方法
9. 并行查询设置分页模型方法:pageMode(Pagination pageModel)改为page(Page page)
10. 增加loadEntity方法,通过EntityQuery获得单条记录:
public <T extends Serializable> T loadEntity(Class<T> entityClass, EntityQuery entityQuery);
11. 增加numFmt(numberFormat) 对英文金额转大写的支持
<number-format columns="total_amt" format="capital-en"/>
12. 删除对SybaseIQ数据库的支持
13. 优化部分不使用的代码和注释
4.x 升级5.0 修改点
- 分页查询PaginationModel 类改为Page
- org.sagacity.sqltoy.executor.QueryExecutor 改为 org.sagacity.sqltoy.model.QueryExecutor
- 拥有JPA模式的对象CRUD
对象式CRUD是ORM框架的基本共识,这里不做更多介绍。
- 超强查询:最理想的状态就是:第一在数据库客户端调试好的sql 最直观高效的移入项目工程中;第二、在需求变化时最简单快速的可以从工程中放入数据库客户端中进行调试。也就是说要最大限度的保持sql的原始面貌;
- 用ORM我们真真正正的痛点是什么?
1、sql的编写和后期维护,上面的图例已经说明问题。
2、执行效率:当同样功能效率有几倍差距时其实就是天地之别了,带来的直接效果就是:一边是用户的高度夸赞、一边是用户的鄙视,您能理解这是什么差距吗?
- 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",同时查询总记录数和单页数据,大幅提升性能
- 在极特殊情况下sqltoy分页考虑是最优化的,如:with t1 as (),t2 as @fast(select * from table1) select * from xxx 这种复杂查询的分页的处理,sqltoy的count查询会是:with t1 as () select count(1) from table1, 如果是:with t1 as @fast(select * from table1) select * from t1 ,count sql 就是:select count(1) from table1
- 做过统计分析的您,害怕数据旋转吗?害怕同比环比吗?
- 无限极分组统计(含汇总求平均),算法配置简单又跨数据库!
- 同比环比
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
go-carbon 1.4.0 版本发布,新增获取世纪和季度开始和结束时间方法
carbon 是一个轻量级、语义化、对开发者友好的Golang时间处理库,支持链式调用、农历和gorm、xorm等主流orm。 如果您觉得不错,请给个 star 吧 github:github.com/golang-module/carbon gitee:gitee.com/go-package/carbon 更新日志 新增 StartOfCentury()方法获取所在世纪的开始时间 新增 EndOfCentury()方法获取所在世纪的结束时间 新增 StartOfQuarter()方法获取所在季度的开始时间 新增 EndOfQuarter()方法获取所在季度的结束时间 StartOfWeek()和 EndOfWeek()方法支持自定义一周开始时间 NewCarbon()方法改名为 New()
- 下一篇
【里程碑】Linkis 1.0.0 正式发布
Linkis 1.0.0是 Linkis 践行“计算治理”的里程碑,提供了计算编排、一次性作业、Web前端和Linkis-Cli的全新shell命令提交代码方式,标志着 Linkis 正式进入1.0版本时代。 Linkis 1.0.0 作为正式版,主要提供了Linkis-Orchetrator计算编排、优化了大量“计算治理”的架构代码、增加了对OnceEngineConn一次性作业的支持,用于OLAP作业和Streaming作业、同时还简化了Linkis的安装部署。 通过 Orchestrator计算编排 和强大的标签管理能力,Linkis 1.0.0已经为跨集群/跨IDC 的细粒度路由、负载均衡、多租户、流量控制、资源管控和编排策略,例如 双活、混合计算等提供了扩展性足够强的架构基石,接下来只需要编写转换规则即可实现各个计算编排的能力。 新特性 Orchestrator Linkis-746 新增Linkis Orchestrator核心模块,为Orchestrator模块提供顶层架构和扩展接口。 Linkis-739 新增Linkis交互式场景的Orchestrator模块。 Li...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2全家桶,快速入门学习开发网站教程
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Hadoop3单机部署,实现最简伪集群