比较 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.2.4-JDK17-SNAPSHOT |
数据库表(含有唯一性索引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地址

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
kunlun-admin v1.5.0 发布,昆仑管理系统
SpringCloud + React 前后端分离 微服务版 昆仑管理系统 v1.5.0 发布! 更新日志 1、增加【我的地盘】菜单及其子页面【工作空间】、【监控平台】和【个人信息】; 2、升级 SpringCloud 、SpringBoot 及 Java 17 版本后适配改造; 3、前端组件升级后适配改造; 4、优化并修复前端及后端若干问题。 系统介绍 昆仑管理系统是一套基于前后端分离架构的后台管理系统。kunlun-web 基于 React + Umi (乌米) + Ant Design (蚂蚁金服) 构建开发,提供前端解决方案;kunlun-service 基于 SpringBoot 与 Spring Cloud 构建开发,提供后端基于微服务架构的解决方案。系统通过 Apache Shiro 与 Jwt 组件,用 token 进行数据交互认证,可快速开发并独立进行 Docker 容器化部署。 使用说明 1. npm 安装前端依赖库,并启动 kunlun-home-web 与 kunlun-system-web 服务; 2. 安装并启动 PostgreSQL; 3. 安装并启动 R...
- 下一篇
开源中国 APP 全新上线:“动弹”回归、集成大模型对话、畅读技术报告
经过数月筹备和研发的新版开源中国 APP —— 今日正式上线! 在当今 AI 浪潮的冲击下,我们身处一个充满无限可能的时代。在这个时代,技术的发展呈现出前所未有的速度和深度,而开发者无疑是引领这股潮流的关键力量。 开源中国不忘「为开发者服务」的初心,希望将 APP 打造成 AI 浪潮中的一艘航船,和广大开发者一起远行。 闲言少叙(要叙咱去「动弹」叙),先来感受一波新版 APP 的丝滑体验: 新版本 APP 亮点版块 「广场」:“动弹”回归、最新鲜开源资讯、最全开源软件库 「报告」:畅读技术报告 「O Insight」:集成大模型对话 下面继续看看详细的新功能体验。 # 动弹 大家期待已久的开源中国社区“灵魂”——动弹终于不负众望回归了! 动弹移动版上线,欢迎大家畅所欲言。在这里,您可以和广大程序员交流互动,分享经验、讨论技术话题,还可随时随地查看开发者各类分享和吐槽。 # 大模型对话 置身 AI 浪潮,新版开源中国 APP 新增大模型对话,准确率高,提供齐全的数据内容;还可选择“社区版、智普 AI 、导师版”三个不同版本; # 开源报告 新版开源中国 APP 还新增报告模块,包含“...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8安装Docker,最新的服务器搭配容器使用
- Linux系统CentOS6、CentOS7手动修改IP地址
- 2048小游戏-低调大师作品
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS8编译安装MySQL8.0.19
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS7,8上快速安装Gitea,搭建Git服务器
- SpringBoot2整合Thymeleaf,官方推荐html解决方案