【比较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/509055.html

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

相关文章

手机日历怎么设置农历生日提醒?生日提醒倒计时怎么设置?

对我而言,记住每个亲朋好友的生日并在每年的那一天给予他们温馨的祝福,是一种传达爱意和关怀的方式。这不仅能够加深我们之间的情感联系,还能让他们感受到自己的重要性。然而,在繁忙的生活节奏中,有时候我们可能会忘记…

39. 【Linux教程】修改文件所属关系

上一节介绍了如何修改文件的读、写、执行权限,包括属主用户权限、所属用户组权限、其他用户组用户权限,本小节介绍如何修改文件的所属关系,所属关系又包括文件的属主和所属组。 1.chown 命令 若想要修改文件的属主,可以使用 chow…

He3 —— 开发者必备的万能工具箱!

推荐一款巨好用又高效的开发必备神器 —— He3 废话不用多说,官网说明简单直接 !官网地址:https://he3app.com/zh/ 非要说这个软件要说有什么不好,可能就是有的人打不开官网吧(DDDD),不过咱可以在本地安装呀&#xf…

【BUUCTF Misc】通关1.0

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【Java】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 …

明日开展 | 2024济南生物发酵系列展携手全球优质品牌惊艳世界,燃放济南!

明日开展,精彩来袭! 2024济南生物发酵系列展 携手全球优质品牌 惊艳世界,燃放济南! 2024济南生物发酵系列展,由中国生物发酵产业协会主办,上海信世展览服务有限公司承办,3月5-7日在山东国际…

Linux入门到入土

Linxu Linux 简介 Linux 内核最初只是由芬兰人林纳斯托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。 Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口&#xff09…

电脑端微信无法打开公众号/小程序?

生气了。怎么动不动电脑端微信就打不开公众号/小程序,每次都要搞好久 第一步:打开控制面板、网络和Internet,选中Internet选项。 第二步:选中连接选项,并打开下方的局域网设置。 第三步:取消 为LAN使用代理…

2023年下半年教师资格证考试《教育知识与能力》(中学)题

3.李老师在初二选择了人数、性别比例、学习成绩、教材各方面情况相同的两个班进行教学,对其中一班采用讲授法,对另一个班采用自学辅导法,经过一个阶段的教学后进行测验,以比较两种方法教学效果,李老师采用的方法属于&a…

Java网络通信TCP

目录 TCP两个核心类 服务端 1.用ServerSocker类创建对象并且手动指定端口号 2.accept阻塞连接服务端与客户端 3.给客户端提供处理业务方法 4.处理业务 整体代码 客户端 1.创建Socket对象,并连接服务端的ip与端口号 2.获取Socket流对象,写入数据…

Catf1agCTF-Web通关合集

本文相关的ctf平台链接:Catf1agCTF - 综合训练平台 WEB签到 查看源代码 flag倒叙了,可以使用下面这个 文本字符串倒序在线工具(ESJSON在线工具) flag: catf1ag{welcome_to_catf1agctf_!!!_gogogo_!!!} flag在哪呢? 查看源代…

JUC并发编程 深入学习Java并发编程【上】

JUC并发编程,深入学习Java并发编程,与视频每一P对应,全系列6w字。 P1-5 为什么学特色预备知识 进程线程概念 进程: 一个程序被运行,从磁盘加载这个程序的代码到内存,就开起了一个进程。 进程可以视为程…

3款宝藏原型设计工具,还不快收好

以下基于 Axure、Figma、即时设计 介绍这三种工具的功能特点,大家可以根据自己的需要来选择。 即时设计 - 可实时协作的专业 UI 设计工具即时设计是一款支持在线协作的专业级 UI 设计工具,支持 Sketch、Figma、XD 格式导入,海量优质设计资源…