当前位置: 首页 > news >正文

【比较mybatis、lazy、sqltoy、mybatis-flex操作数据】操作批量新增、分页查询(二)

orm框架使用性能比较

环境:
idea 
jdk17
spring boot 3.0.7
mysql 8.0
比较mybatis、lazy、sqltoy、mybatis-flex操作数据

测试条件常规对象

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

数据库表(含有唯一性索引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文档

测试结果(结果只提供参考)

MYBATIS_FLEX(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:9毫秒15毫秒122毫秒621毫秒5505毫秒
MYBATIS(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:37毫秒54毫秒96毫秒689毫秒5656毫秒
LAZY(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:27毫秒48毫秒304毫秒1062毫秒4158毫秒
SQLTOY(batchStory)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:47毫秒69毫秒204毫秒896毫秒7978毫秒
MYBATIS_FLEX(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:40毫秒12毫秒22毫秒96毫秒782毫秒
MYBATIS(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:1064毫秒983毫秒989毫秒973毫秒976毫秒
LAZY(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:53毫秒9毫秒18毫秒70毫秒653毫秒
SQLTOY(findPage)影响行数:10影响行数:100影响行数:1000影响行数:10000影响行数:100000
执行时间:51毫秒32毫秒45毫秒106毫秒335毫秒
写在最后
批量保存:
  • 一万条数据以内 性能由高到低 mybatis-flex 、mybatis、sqltoy、lazy 其中mybatis和mybatis-flex 耗时基本相当
  • 十万数据时,处理时间由快到慢依次是: lazy、mybatis、mybatis-flex、sqltoy
分页查询: (比较之前问题Lazy ORM 框架内部做了优化后)
  • 一万条数据以内 性能由高到低 lazy、mybatis-flex 、sqltoy、mybatis
  • 十万数据时,处理时间由快到慢依次是: sqltoy、lazy、mybatis-flex、mybatis
当前项目地址
lazy-orm地址
mybatis地址
sqltoy地址
mybatis-flex地址

相关文章:

  • SpringMVC 中的常用注解和用法
  • 一文掌握:电力管理系统该的功能和界面设计
  • 基于OpenCV的图形分析辨认05(补充)
  • 在PyCharm中使用Jupyter Notebooks实现高效开发
  • Android 混淆是啥玩意儿?
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:CheckboxGroup)
  • Nginx配置php起WoWSimpleRegistration服务
  • Django Web架构:全面掌握Django模型字段(上)
  • 文件另存为保存:无法在未启用宏的工作簿中保存以下功能,
  • 一键打通红圈泛微,让协同办公更轻松!
  • 滞销番茄变废为宝,成功打造市场份额第一番茄品牌|日本极致产品力
  • C# 的一些好用的语法糖介绍
  • SLAM基础知识:前端和后端
  • STM32各外设初始化步骤
  • 1、MQ_介绍、优缺点、类型等
  • 前端每日一练:三栏布局,包括 Flex 布局、浮动布局、Grid 布局以及绝对定位布局。
  • 弹性地基梁matlab有限元编程 | 双排桩支护结构 | Matlab源码 | 理论文本
  • 本地项目推送到腾讯云轻量应用服务器教程(并实现本地推送远程自动更新)
  • 设计模式:观察者模式 ⑧
  • 夏目友人帐 第六季特别篇 2017.09.27
  • 上海证监局规范辖区私募经营运作,6月15日前完成自评自纠
  • 上海国际电影节推出三大官方推荐单元,精选十部优秀影片
  • 洲际酒店:今年第一季度全球酒店平均客房收入同比增长3.3%
  • 人民日报整版调查:中小学春秋假,如何放得好推得开?
  • 云南临沧一行贿案金额认定比受贿案多41万,重审时检方变更金额起诉
  • 2025江西跨境电子商务发展交流会召开,探索行业发展新趋势