sqltoy-orm-4.17.5 发布,支持 QueryExecutor 中定义分库分表

栏目: 软件资讯 · 发布时间: 5年前

内容简介:开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件(可直接在idea中检索安装): https://github.com/threefish/sqltoy-idea-plugins...

开源地址:

更新内容

1、 支持QueryExecutor、EntityQuery中使用分库分表策略配置 (原本只支持xml中定义)

//分库
dbSharding(String strategy, String... paramNames)
//分表
tableSharding(String strategy, String[] tables, String... paramNames)

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操作规避了hibernate jpa的缺陷,可以深入对比update/updateAll、saveOrUpdate/saveOrUpdateAll内部差异
13、提供了极为人性化的条件处理:排它性条件、日期条件加减和提取月末月初处理等
14、提供了查询结果日期、数字格式化、安全脱敏处理,让复杂的事情变得简单,大幅简化sql或结果的二次处理工作

  • sqltoy的crud:了解hibernate jpa吧?原理一致,但在update等一些功能上更加细致
StaffInfoVO staffInfo = new StaffInfoVO();
staffInfo.setStaffId("S2007").setStaffName("测试员工9");
//保存
sqlToyLazyDao.save(staffInfo);

//保持或修改
sqlToyLazyDao.saveOrUpdate(staffInfo);

//针对照片属性强制更新
sqlToyLazyDao.update(staffInfo, "photo");

//加载
sqlToyLazyDao.load(new StaffInfoVO("S2007"))

//删除
sqlToyLazyDao.delete(new StaffInfoVO("S2007"))
  • 简要介绍一下sqltoy的几个特点

sqltoy提供了最简洁的动态sql编写

sqltoy-orm-4.17.5 发布,支持 QueryExecutor 中定义分库分表

我们对比一下mybatis的实现(从可阅读、可维护等视角看)

sqltoy-orm-4.17.5 发布,支持 QueryExecutor 中定义分库分表

  • 缓存翻译,利用缓存减少关联查询,简化sql同时大幅提升效率

sqltoy-orm-4.17.5 发布,支持 QueryExecutor 中定义分库分表

  • 极致分页优化

sqltoy-orm-4.17.5 发布,支持 QueryExecutor 中定义分库分表

  • 并行查询
// 使用并行查询同时执行2个sql,条件参数是2个查询的合集
String[] paramNames = new String[] { "userId", "defaultRoles", "deployId", "authObjType" };
Object[] paramValues = new Object[] { userId, defaultRoles, DEPLOY_ID,GROUP };

List<QueryResult<TreeModel>> list = super.parallQuery(
		Arrays.asList(ParallQuery.create().sql("webframe_searchAllModuleMenus").resultType(TreeModel.class),
				ParallQuery.create().sql("webframe_searchAllUserReports").resultType(TreeModel.class)),
		paramNames, paramValues);
  • 数据旋转

sqltoy-orm-4.17.5 发布,支持 QueryExecutor 中定义分库分表

  • 无限极分组统计(含汇总求平均),算法配置简单又跨数据库!sqltoy-orm-4.17.5 发布,支持 QueryExecutor 中定义分库分表
  • 同比环比

sqltoy-orm-4.17.5 发布,支持 QueryExecutor 中定义分库分表


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Writing Apache Modules with Perl and C

Writing Apache Modules with Perl and C

Lincoln Stein、Doug MacEachern / O'Reilly Media, Inc. / 1999-03 / USD 39.95

Apache is the most popular Web server on the Internet because it is free, reliable, and extensible. The availability of the source code and the modular design of Apache makes it possible to extend Web......一起来看看 《Writing Apache Modules with Perl and C》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具