极致性能 sqltoy-orm-4.13.1 发版
开源地址:
- github: https://github.com/chenrenfei/sagacity-sqltoy
- gitee: https://gitee.com/sagacity/sagacity-sqltoy
- idea 插件(可直接在idea中检索安装): https://github.com/threefish/sqltoy-idea-plugins
更新内容
1、增强外部如报表平台通过xml集成sqltoy的处理兼容性,尤其xml的命名空间前缀名称的处理
如下面的报表中关于数据提取的部分引入了sqltoy的schema和命名空间为s:
<sql id="rpt_datasql1"> <s:sharding-datasource strategy="skylineStrategy" /> <s:translate cache="staffIdName" columns="CREATE_BY" uncached-template=""/> <s:filters> <s:eq params="*" value="-1"/> </s:filters> <s:value> <![CDATA[ ]]> </s:value> </sql>
2、增强quickvo增加nvarchar、money等类型默认处理
3、优化loadAll 查询,按每批次1000分批执行加载,规避sql in 参数不能超过1000的问题
快速了解 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?因为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的实现(这种写法是很多人反对xml的原因吧!):
- 缓存翻译,利用缓存减少关联查询,简化sql同时大幅提升效率
- 极致分页优化
- 旋转数据并进行环比计算

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
xJavaFxTool 0.2.3 发布,优化首页界面
基于 JavaFx 搭建的实用小工具集合xJavaFxTool更新至 0.2.3 版本,此版本添加了全新的首页菜单,可在设置中切换。 此次更新中优化的内容如下: 1.优化插件下载错误问题; 2.优化启动首页。
-
下一篇
MeEdu v3.2 版本上线,在线教育点播系统
新增 added: 课程章节收缩 added: 用户协议,用户隐私协议,关于我们页面增加自定义Js代码 added: 课程和视频评论控制 added: 视频批量删除 added: 后台积分操作 added: 视频pc和h5的播放器指定 added: 视频试看 added: 视频快进控制 added: 试看标签 优化 优化:系统配置数据改为数据库存储 优化:阿里云相关依赖代码优化 修复 fixed: 搜索页面标题 fixed: helper.php的加载 fixed: 课程观看进度判断 fixed: 傻瓜安装 Github:https://github.com/Qsnh/meedu Gitee:https://gitee.com/myteng/MeEdu 官网:https://meedu.vip 当前功能概览 视频在线点播 课程评论/视频评论 支持阿里云视频点播、腾讯云视频点播服务 手机号注册/登录(短信登录)/密码找回/手机号绑定 QQ登录/Github登录/微信开放平台扫码登录 课程单独购买/视频单独购买/全站会员三种收费模式 站内消息 支付宝/微信/手动转账三种支付方式 积分功能...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2更换Tomcat为Jetty,小型站点的福音