睿智 sqltoy-orm-4.13.13 发版
致谢:
- 非常感谢多个网友的积极参与和反馈,提出这么多的好意见,让sqltoy越来越坚实可靠!
开源地址:
- github: https://github.com/chenrenfei/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
- idea 插件(可直接在idea中检索安装): https://github.com/threefish/sqltoy-idea-plugins
更新内容
1、优化了执行输出,避免存在2次日志输出现象,导致日志分析干扰
2、改进批量操作的日志输出信息,增加了批量执行的记录数量
3、修复特定情况下存储过程调用bug
4、修复报表集成使用sqltoy自身的汇总计算前面的命名空间没有处理的缺陷
5、分页优化代码优化
快速了解 sqltoy-orm:
- sqltoy是全新一代的ORM框架,兼顾jpa对象式操作的优势,同时极大增强了查询功能,辅以科学的sql编写模式、巧妙的缓存翻译集成、极致的分页优化以及针对大规模数据下的分库分表、超复杂场景下的mongodb、elastic、clickhouse组合应用!
- sqltoy给你带来了多种主键策略,除常规的UUID、sequence、identity外,还包含雪花算法和基于redis产生有规则的业务主键等。
- sqltoy还提供了针对统计分析的:数据旋转、无限级分组计算、同比环比等来减少开发者写复杂sql。
- sqltoy在很多方面提供了极为实用的方法,如:树形表处理、isUnique、findTop、getRandomResult、updateFetch等等
- sqltoy不走jooq全对象式、mybatis全sql式这种不是天就是地的极端路子,紧贴项目实战发展起来的框架,让各自技术以合理的方式应用于合理的地方!
简要举例介绍(因篇幅问题部分举例):
- JPA式的CRUD,但规避了其不足,提供了默认的SqlToyCRUDService(简单的则无需写service方法) 和 SqlToyLazyDao(开发无需自己写Dao,只需要写Service业务逻辑),可以了解类似于update、updateAll、saveOrUpdate等内在逻辑,减少了数据库交互,考虑了高并发和业务对象变更的特征!
@Autowired private SqlToyCRUDService sqlToyCRUDService; //基于对象保存 sqlToyCRUDService.save(staffInfo); //基于对象更新(字段值为null的不会参与变更) sqlToyCRUDService.update(staffInfo); //深度变更,全部字段都参与变更 sqlToyCRUDService.updateDeeply(staffInfo); //基于对象更新(制定强制修改的字段) sqlToyCRUDService.update(staffInfo,new String[]{"staffName","onDuty"}); //基于对象更新 sqlToyCRUDService.saveOrUpdate(staffInfo); //加载对象 sqlToyCRUDService.load(new StaffInfoVO("S190715009")); //加锁获取对象 sqlToyCRUDService.load(new StaffInfoVO("S190715009"),LockMode.UPGRADE); //判断对象是否唯一 sqlToyCRUDService.isUnique(staffInfo, "staffCode"); //delete\deleteAll\updateAll\loadAll 等等不一一写完
- 单表等简单的查询和变更操作,提供了链式操作
//单表对象查询,直接传参模式 List<StaffInfoVO> staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class, EntityQuery.create().where("#[staffName like ?] #[ and status=?]").values("陈", 1).lock(LockMode.UPGRADE) .orderBy("staffName").orderByDesc("createTime")); //单表查询,对象传参模式 List<StaffInfoVO> staffVOs = sqlToyLazyDao.findEntity(StaffInfoVO.class, EntityQuery.create().where("#[staffName like :staffName] #[ and status=:status]") .values(new StaffInfoVO().setStatus(1).setEmail("test3@aliyun.com"))); //代码中链式查询并删除 Long deleteCount = sqlToyLazyDao.deleteByQuery(StaffInfoVO.class, EntityQuery.create().where("status=:status").values(new StaffInfoVO().setStatus(1))); //链式变更 Long updateCount = sqlToyLazyDao.updateByQuery(StaffInfoVO.class, EntityUpdate.create().set("staffName", "张三").where("staffName like ? and status=?").values("陈", 1));
- 更强大的查询,sqltoy强调复杂查询建议放置于xml中跟代码分离(但是可以写在代码中的),不要见xml就反,请深入了解之后再反!
//sqltoy统一的规则就是直接传递sql语句或者对应的sqlId,并不是说sql只能写在xml中(推荐但不绝对) findBySql(final String sqlOrSqlId, final String[] paramsNamed, final Object[] paramsValue, final Class<T> voClass) //嫌弃上面的格式化传参也可以使用这样链式查询 sqlToyLazyDao.findByQuery(new QueryExecutor("sqltoy_order_search").names("orderId", "authedOrganIds") .values(null, authedOrgans).resultType(DeviceOrderInfoVO.class));
- sqltoy提供了最简洁的动态sql编写
我们对比一下mybatis的实现(很简单的sql写的如此让人不愿意写!):
- 缓存翻译,利用缓存减少关联查询,简化sql同时大幅提升效率
- 极致分页优化
- 旋转数据并进行环比计算

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
SpreadJS V13.0 Update2 发布,增强产品功能、新增 Vue 等框架的示例代码
SpreadJS 是一款基于 HTML5 的纯前端表格控件,兼容 450 种以上的 Excel 公式,具备“高性能、跨平台、与 Excel 高度兼容”的产品特性,被中国软件行业协会认定为“中国优秀软件产品”。 伴随着SpreadJS V13.0 Update2 的正式发布,其图表、排序、形状等功能进一步增强。同时,针对重要的产品资源,SpreadJS还在『学习指南』中增加了React、Vue、Angular框架的示例代码,具体内容见下方说明: 在『学习指南』中增加 React、Vue、Angular 框架示例代码 图表系列数据标签定制 保留图表导入标志 按组排序 排序时忽略隐藏的行 形状允许旋转 显示/隐藏形状句柄 查看放大 滚动条自定义 ClearPending按范围变化 RangeChanged事件isUndo属性 1. 在『学习指南』中增加React、Vue、Angular 框架示例代码 为了让用户更方便的在框架中嵌入 SpreadJS 表格控件,本次更新,在 SpreadJS 学习指南的所有示例中,增加了三大框架的对应代码,如下图所示: 『学习指南』地址 2. 图表系列数据标签...
- 下一篇
语言识别模型的起源,一个数学家数了数小说中的 20000 字母
语言识别模型源于一个数学家读小说的故事。 1913年,俄罗斯数学家安德雷·安德耶维齐·马尔科夫拿起一本俄罗斯文学的经典作品,亚历山大·普希金的歌剧小说《尤金·奥涅金》。不过马尔科夫只是为了测试自1909年发展起来的概率论。数学家更想看到一个个字母后面的数学结构。那时的概率论主要用来分析轮盘赌局和硬币翻转等现象,认为之前的结果不会影响到的当前事件的可能性。但是马尔科夫不赞同,他觉得大多数事情都有因果关系,他想要通过概率分析一些事情,并建立模型。 德雷·安德耶维齐·马尔科夫 《尤金·奥涅金》成为马尔科夫的试验材料。他的假设听上去匪夷所思——这本经典文学作品中,某个位置会出现什么字母,某种程度上取决于它之前的字母。 计算机还没出现的1913,马尔科夫抄录了《尤金·奥涅金》书中的前 20000 个字母,不包括标点和空格。然后按10*10的排列方式,填在200个网格中,开始逐行逐列对元音字母进行计数。统计完发现,43%的字母是元音,57%是辅音。马尔科夫还将这些字母分成成对的元音和辅音组合,结果是:1104个元音对、3827个辅音对、15069个元音-辅音和辅音-原因对。从统计学看,这证明,...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS7,CentOS8安装Elasticsearch6.8.6
- MySQL8.0.19开启GTID主从同步CentOS8
- Hadoop3单机部署,实现最简伪集群
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2全家桶,快速入门学习开发网站教程