【比较mybatis、lazy、sqltoy、lambda、操作数据 】操作批量新增、分页查询

orm框架使用Lambda性能比较

环境:
idea 
jdk17
spring boot 3.0.7
mysql 8.0

测试条件常规对象

orm 框架是否支持xml是否支持 Lambda对比版本
mybatis☑️☑️3.5.4
sqltoy☑️☑️5.2.98
lazy✖️☑️1.2.3-JDK17

数据库表(含有唯一性索引s_u)

CREATE TABLE `sys_user` (`column_name` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '额外字段',`create_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '创建时间',`id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',`is_deleted` tinyint(1) DEFAULT NULL COMMENT 'null',`password` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '密码',`scope` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'null',`status` tinyint(1) DEFAULT NULL COMMENT '状态',`update_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`username` varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户名',PRIMARY KEY (`id`) USING BTREE,UNIQUE KEY `s_u` (`scope`,`username`)
) ENGINE=InnoDB AUTO_INCREMENT=9223371632070323791 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

比较方法:增加、修改、删除、分页查询(当前项目暂时只比较批量新增和分页)

项目设计

声明 SysUserRepository 接口提供对应增删改查方法
在这里插入图片描述

声明抽象类 SysUserRepositoryAbstractRecord 继承 SysUserRepository 并且提供对应的框架执行结果存储
在这里插入图片描述

三种框架mybatis、sqltoy、Lazy 创建SysUserRepository 的实现
在这里插入图片描述

不同 ORM 操作数据的实现

在这里插入图片描述

测试条件 批量插入数据 10、100、1000、10000、100000 ,分页查询数据 10、100、1000、10000、100000

项目启动后使用浏览器打开 http://localhost:1003/sys/user/run-compare

测试执行过程

清空需要插入表中所有数据
通过三种ORM框架进行数据批量新增、而后进行分页查询,记录消耗时间,输出md文档

测试结果(因为当前只对lambda操作测试,mybatis针对有唯一性索引的增加或者修改没有做优化,所以结果只提供参考)

MYBATIS(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:218毫秒338毫秒889毫秒5017毫秒50961毫秒
LAZY(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:7毫秒21毫秒53毫秒417毫秒3997毫秒
SQLTOY(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:57毫秒75毫秒267毫秒1750毫秒18456毫秒
MYBATIS(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:1234毫秒1130毫秒957毫秒966毫秒945毫秒
LAZY(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:28毫秒18毫秒19毫秒133毫秒1107毫秒
SQLTOY(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:88毫秒38毫秒45毫秒98毫秒334毫秒
写在最后
批量保存: lazy性能和sqltoy 更接近原生sql 耗时相对最短
分页查询: sqltoy性能最高、mybatis次之 lazy框架在数据上万后反射性能明显下降
当前项目地址
lazy-orm地址
mybatis地址
sqltoy地址

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/498738.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

森林监测VR虚拟情景再现系统更便利

AI人工智能技术已经逐渐渗透到各个领域,为我们的生活带来了诸多便利。在虚拟仿真教学领域,AI技术的应用也日益丰富,为虚拟情景交互体验带来了前所未有的好处。 提高VR虚拟情景的逼真度 通过深度学习和计算机视觉等技术,AI/VR虚拟现…

ucharts柱状图自定义颜色无效?

解决ucharts柱状图某列自定义颜色无效问题 今天遇到一个坑,自己不够仔细。利用官网Demo中的"温度计图表",实现设备的单节电压显示,通过排序最大值和最小值,标识不同颜色显示。发现怎么设置颜色都不生效… 解决设置颜色不…

“比特币一举攻破6.4万”!某交易所突然崩盘:投资者账户“归零”,无法获利了结……

昨晚,比特币接连突破多道重要价格关卡,并在今(29)日1̇:15左右一度触及64000美元,单日最大涨幅高达13%,距离历史最高点69000美元仅一步之遥。 受比特币大涨刺激,加密货币市场集体“狂…

LeetCode 2265.统计值等于子树平均值的节点数

给你一棵二叉树的根节点 root ,找出并返回满足要求的节点数,要求节点的值等于其 子树 中值的 平均值 。 注意: n 个元素的平均值可以由 n 个元素 求和 然后再除以 n ,并 向下舍入 到最近的整数。 root 的 子树 由 root 和它的所…

使用 Helm 安装 极狐GitLab

本篇作者 徐晓伟 使用 Helm 简便快捷的部署与管理 极狐GitLab 前提条件 k8s 完成 helm 的配置 k8s 完成 ingress 的配置 内存至少 10G 演示环境是 龙蜥 Anolis 8.4(即:CentOS 8.4)最小化安装k8s 版本 1.28.2calico 版本 3.26.1nginx ingre…

【已解决】c++如何从0配置ffmpeg

本博文源于笔者正在做的任务,将视频mp4每帧转换成jpg格式,前提是需要配置ffmpeg。因此本文从0下载教读者如何配置ffmpeg。 文章目录 1、百度搜索官网2、配置项目3、创建main.cpp测试库与包4、 总结 1、百度搜索官网 官网已经搜索到,我们要找…

黑马c++ STL部分 笔记(3) vector容器

vector可以动态扩展(不是在原有基础上扩展,而是找更大空间,然后将元数据拷贝新空间,释放原空间) vector容器的迭代器是支持随机访问的迭代器 1. vector容器的构造 // vector容器的构造(一般用拷贝构造&am…

苹果放弃10年造车计划,全力专注人工智能领域

据美国媒体报道,苹果公司在周二在内部一次约12分钟的简短会议上披露消息:苹果将取消长达十年的造车计划,转而投向生成式AI。 据知情人士透露,苹果首席运营官杰夫威廉姆斯(Jeff Williams)和负责这项工作的副…

干货分享②:免费制作发票管理系统!

前天为大家带来了,如何使用码上飞制作资产管理系统的教程,今天继续教大家使用码上飞来制作发票管理系统! 第一步:老规矩,先上号! 码上飞 CodeFlying | AI 智能软件开发平台! 第二步[提出需求]…

QEMU之内存虚拟化

内存虚拟化方案 最直观的方案,将QEMU进程的虚拟地址空间的一部分作为虚拟机的物理地址。但该方案有一个问题: 在物理机上,CPU对内存的访问在保护模式下是通过分段分页实现的,在该模式下,CPU访问时使用的是虚拟地址&am…

SpringBoot实现短链跳转

目录 1.背景介绍 2.短链跳转的意义 3.SpringBoot中的代码实现 1.建议短链-长链的数据库表:t_url_map: 2.映射实体 3.Dao层实现 4.Service层实现 5.Controller层实现 3.结果测试 4.问题 1.背景介绍 短链跳转是一种通过将长链接转换为短链接的方式&…

【两颗二叉树】【递归遍历】【▲队列层序遍历】Leetcode 617. 合并二叉树

【两颗二叉树】【递归遍历】【▲队列层序遍历】Leetcode 617. 合并二叉树 解法1 深度优先 递归 前序解法2 采用队列进行层序遍历 挺巧妙的可以再看 ---------------🎈🎈题目链接🎈🎈------------------- 解法1 深度优先 递归 前…