开源地址:
- github: https://github.com/sagframe/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
- idea 插件 (可直接在 idea 中检索安装): https://github.com/imyuyu/sqltoy-idea-plugin
- sqltoy 脚手架项目:https://github.com/CoCoTeaNet/sra-admin
- sqltoy lambda 项目: https://gitee.com/gzghde/sqltoy-plus
更新内容
1、增加@secure-loop 和 @secure-loop-full 非注入循环
//secure-loop自动去除循环中的null记录,secure-loop-full则不去除null记录
selet * from table t1
where 1=1 #[(@secure-loop(:nameList ,' t1.name like :nameList[i] ',' or '))]
2、增加修改指定字段的功能
lightDao.update().updateFields(field1,field2).one(entitiy);
lightDao.update().updateFields(field1,field2).many(entities);
3、增加了对sql中参数进行sql注入校验功能
<sql id="show_case">
<filters>
<!-- 一般针对@loop(:paramList)、@value(:paramName) 中涉及到的参数进行sql注入校验:
level分3种:
STRICT_WORD 数字字符下划线;
RELAXED_WORD:宽松形式的单词(允许点号、@、#、中文等非危险性符号);
SQL_KEYWORD sql关键词(select\drop\limit\delete\sleep\group by\order by\ or/and x=x 等)-->
<valid-sqlInjection params="productIds" level="STRICT_WORD"/>
</filters>
</sql>
- 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",同时查询总记录数和单页数据,大幅提升性能

- 便利的跨数据库统计计算:数据旋转

- 便利的跨数据库统计计算:无限极分组统计 (含汇总求平均)

- 便利的跨数据库统计计算:同比环比

6、扩展集成