sagacity-sqltoy-5.2.11发版,支持数据版本控制、多租户过滤


开源地址:

  • github: https://github.com/sagframe/sagacity-sqltoy
  • gitee: https://gitee.com/sagacity/sagacity-sqltoy
  • idea 插件 (可直接在 idea 中检索安装):  https://github.com/threefish/sqltoy-idea-plugins

更新内容

1、增加数据版本控制

@Entity(tableName = "sqltoy_staff_info", pk_constraint = "PRIMARY")
//startDate表示版本格式为:202209181前面是日期形式,默认为false,数据长度不足9位也为false
@DataVersion(field = "dataVersion", startDate = true)
public class StaffInfoVO implements Serializable {
//@DataVersion
@Column(name = "DATA_VERSION", comment = "", length = 10L, type = java.sql.Types.INTEGER, nullable = false)
	private Integer dataVersion;
}


2、多租户防数据越权过滤

spring.sqltoy.unifyFieldsHandler=com.sagframe.sqltoy.plugins.SqlToyUnifyFieldsHandler
1、IUnifyFieldsHandler 统一字段处理中定义授权租户信息
public String[] authTenants(Class entityClass, OperateType operType) {
	// TODO Auto-generated method stub
	return new String[] { "S0002" };
}
2、配置文件定义sqlInterceptors
spring.sqltoy.sqlInterceptors[0]=org.sagacity.sqltoy.plugins.interceptors.TenantFilterInterceptor

3、对象上增加@Tenant(field="租户字段")

@Tenant(field = "tenantId")
@Entity(tableName="SQLTOY_STAFF_INFO",comment="",pk_constraint="PK_SQLTOY_STAFF_INFO")
public class StaffInfoVO implements Serializable {

}

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,让你的查询性能成几何级提升

  • 极致的分页,同样帮助你实现查询的性能大幅提升
  1. 快速分页:@fast () 实现先取单页数据然后再关联查询,极大提升速度
  2. 分页优化器:page-optimize 让分页查询由两次变成 1.3~1.5 次 (用缓存实现相同查询条件的总记录数量在一定周期内无需重复查询
  3. sqltoy 的分页取总记录的过程不是简单的 select count (1) from (原始 sql);而是智能判断是否变成:select count (1) from 'from 后语句 ', 并自动剔除最外层的 order by
  4. sqltoy 支持并行查询:parallel="true",同时查询总记录数和单页数据,大幅提升性能
 
  • 便利的跨数据库统计计算:数据旋转
  • 便利的跨数据库统计计算:无限极分组统计 (含汇总求平均)
  • 便利的跨数据库统计计算:同比环比

 


相關推薦

2023-11-08

开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):  https://github.com/threefish/sqltoy-idea-plugins sqltoy 脚手架项目:https://gitee.com/momoljw/ss

2023-11-18

开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):  https://github.com/threefish/sqltoy-idea-plugins sqltoy 脚手架项目:https://gitee.com/momoljw/ss

2023-10-28

开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):  https://github.com/threefish/sqltoy-idea-plugins sqltoy 脚手架项目:https://gitee.com/momoljw/ss

2023-10-25

AI 时代 开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):  https://github.com/threefish/sqltoy-idea-plugins sqltoy 脚手架项目:https://gitee.co

2023-11-25

值的领域 开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):  https://github.com/threefish/sqltoy-idea-plugins sqltoy 脚手架项目:https://gitee

2023-12-05

开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):  https://github.com/threefish/sqltoy-idea-plugins sqltoy 脚手架项目:https://gitee.com/momoljw/ss

2023-09-28

  现在普遍认为是后 Hadoop 时代,CDH 的停更和闭源导致传统的 Hadoop 体系组件栈没有一个 称手好用的管理工具,越来越多新一代的大数据项目也在层出不穷, 同样也需要运维和管理,并且需要适配云原生的能力

2024-02-05

p; core starter v3.2.0 新增JSON反序列化StringListDeserializer,支持JSON数组字符串转List 新增SQL方言翻译器,移除各方言的初始化SQL文件,转为使用翻译器实现转换 新增BigDecimal序列化类BigDecimal2StringSerializer,支持抹零格式化显

2022-09-15

开源地址: github: https://github.com/sagframe/sagacity-sqltoy gitee: https://gitee.com/sagacity/sagacity-sqltoy idea 插件 (可直接在 idea 中检索安装):  https://github.com/threefish/sqltoy-idea-plugins 更新内容 1、增加h2数据库的支持,便

2024-04-18

要升级,包括: Spring boot 升级至 v3.x 最新(v3.2.4),JDK 支持 17+ 新增支持多个数据库:PostgreSql、金仓Kingbase、达梦DM8、Oracle 12c+、SqlServer 2017+、SqlLite。基础组件和devtools全支持,满足信创、嵌入式开发等场景 支持SSO单点登

2023-09-05

会持续维护修复bug(修复的形式为直接提交到4.X分支停止发版) 视频介绍 为了更好的让大家了解 5.1.0 作者录制了相关的视频 供大家快速了解上手 5.1.0 新功能与变更介绍: https://www.bilibili.com/video/BV1fj411y71X/ 搭建与运行: htt

2023-05-07

样准备投入生产的还有对 OpenSearch 仪表板中多个数据源的支持。现在,您可以跨多个 OpenSearch 集群动态管理数据源,基于这些源创建索引模式,针对特定数据源运行查询,并将可视化合并到单个仪表板中。此功能在 OpenSearch 2.4.0

2024-04-04

端删除此按钮) - feat(lamp-util): 自行维护 fastdfs-client, 以支持jdk17 - refactor(lamp-web): 租户、部门切换页面优化 - refactor(lamp-base):BaseWebConfiguration配置优化 - refactor(lamp-common):启动类优化 - refactor(lamp-base): 优化单个附件下载接口 - re

2023-11-05

mple.com 密:Password1! 注:当前版本为 beta 版,不保证数据安全并且随时回滚 示意图     项目特点 事件驱动 基于角色的权限控制 (RBAC) 多租户 不对称密匙 OAuth2 站内信,短信,邮件通知 用户密码重置