SQL-Toy技术分享

文档说明

  本文档仅对在使用sqltoy中的一些技巧和使用心得体会的描述,详细使用请参考官方文档。

开源地址

  • github: https://github.com/sagframe/sagacity-sqltoy gitee:
  • https://gitee.com/sagacity/sagacity-sqltoy
  • IDEA开源插件地址: https://gitee.com/threefish/sqltoy-idea-plugins

技术分享

缓存功能

  • 使用方法
    参考官方文档
  • 场景分析
  1. 列表查询往往需要关联字典、编码、组织等配置信息,可利用缓存翻译优化,减少表join数量,提高性能
  2. 前端页面下拉选择,树形选择等常常对应后端字典、编码、组织等配置信息,这种场景也可优先选择缓存优化

对象操作

  • 使用方法
    参考官方文档
  • 注意事项
  1. 对一些重要信息的更新保存,要注意事务控制,避免脏数据录入,同时有效业务日志的输出能有效保证错误排查的效率

  2. 对于批量操作请尽可能使用saveAll,不要使用for循环,这样有利于提高新能(注意,saveAll批次不要过大。过大可考虑异步处理方案)

  3. 对于默认值,不要过分依赖数据库中的默认值,除统一填充的字段外,其他字段尽可能在编码阶段给到明确的值,比如一些登记,标识等字段

SQL查询

  • 使用方法
    参考官方文档
  • 使用帮助
  1. 查询单对象:请查询load操作
  2. 查询单值: 请查阅get操作
  3. 查询LIST: 请查阅find操作
  4. 执行自定义更新SQL:请查阅execute操作

常用标签

  • 使用方法
    参考官方文档
  • 使用建议
  1. value标签
    将sql尽可能使用value标签包裹,利于sqltoy插件语法提示(idea安装sqltoy插件自行百度)
  2. @value
    一些数值类型字段尽可能使用@value,避免不必要的类型转换,利于性能优化
  3. @loop
    在in的场景下注意param的size和所使用的版本,详情查阅官方文档

性能优化

  • 常见总结
  1. 缓存翻译,缓存查询
  2. 列表查询count重写,同参数缓存
  3. 批量操作saveAll
  4. 并行查询
  5. 多表关联,子表的查询条件可以使用在关联语句后面,减少join数量,提高性能
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sqltoy-orm是比hibernate+myBatis更加贴合项目的orm框架,具有hibernate增删改的便捷性同时也具有比myBatis更加灵活优雅的自定义sql查询功能。 sqltoy-orm支持以下数据库: oracle 从oracle11g到19c db2 9.5+,建议从10.5 开始 mysql 支持5.6、5.7、8.0 版本 postgresql 支持9.5 以及以上版本 sqlserver 支持2008到2019版本,建议使用2012或以上版本 sqlite sybase_iq 支持15.4以上版本,建议使用16版本 elasticsearch 只支持查询,版本支持5.7+版本,建议使用7.3以上版本 clickhouse mongodb (只支持查询) sqltoy-orm特性: 1、根本上杜绝了sql注入问题,sql支持写注释、sql文件动态更新检测,开发时sql变更会自动重载。 2、最直观的sql编写模式,当查询条件稍微复杂一点的时候就会体现价值,后期变更维护的时候尤为凸显。 3、极为强大的缓存翻译查询:巧妙的结合缓存减少查询语句表关联,极大简化sql和提升性能。 4、最强大的分页查询:很多人第一次了解到何为快速分页、分页优化这种极为巧妙的处理,还有在count语句上的极度优化。 5、跨数据库函数方言替换,如:isnull/ifnull/nvl、substr/substring 等不同数据库。 sqltoy-orm特点: 1、最优雅直观的sql编写模式 2、天然防止sql注入,执行过程 3、最强大的分页查询 4、最巧妙的缓存应用,将多表关联查询尽量变成单表 5、跨数据库 6、提供行列转换(数据旋转),避免写复杂的sql或存储过程,用算法来化解对sql的高要求,同时实现数据库无关(不管是mysql还是sqlserver) 7、提供分组汇总求平均算法(用算法代替sql避免跨数据库语法不一致) 8、分库分表 9、五种非数据库相关主键生成策略 10、elastic原生查询支持 11、elasticsearch-sql 插件模式sql模式支持     sqltoy-orm框架系统 更新日志: v4.18.22 1、在findEntity中EntityQuery可以设置fetchSize 2、在sqltoyContext中可以全局设置fetchSize,例如 spring.sqltoy.fetchSize=200 3、convertType 支持空集合返回空集合 4、针对一些特殊原因导致表名是数据库关键词的处理支持

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值