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

2024-03-02 11:52

本文主要是介绍【比较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地址

这篇关于【比较mybatis、lazy、sqltoy、mybatis-flex操作数据】操作批量新增、分页查询(二)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/766029

相关文章

Java字符串操作技巧之语法、示例与应用场景分析

《Java字符串操作技巧之语法、示例与应用场景分析》在Java算法题和日常开发中,字符串处理是必备的核心技能,本文全面梳理Java中字符串的常用操作语法,结合代码示例、应用场景和避坑指南,可快速掌握字... 目录引言1. 基础操作1.1 创建字符串1.2 获取长度1.3 访问字符2. 字符串处理2.1 子字

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

SQL表间关联查询实例详解

《SQL表间关联查询实例详解》本文主要讲解SQL语句中常用的表间关联查询方式,包括:左连接(leftjoin)、右连接(rightjoin)、全连接(fulljoin)、内连接(innerjoin)、... 目录简介样例准备左外连接右外连接全外连接内连接交叉连接自然连接简介本文主要讲解SQL语句中常用的表

SpringValidation数据校验之约束注解与分组校验方式

《SpringValidation数据校验之约束注解与分组校验方式》本文将深入探讨SpringValidation的核心功能,帮助开发者掌握约束注解的使用技巧和分组校验的高级应用,从而构建更加健壮和可... 目录引言一、Spring Validation基础架构1.1 jsR-380标准与Spring整合1

Python 中的 with open文件操作的最佳实践

《Python中的withopen文件操作的最佳实践》在Python中,withopen()提供了一个简洁而安全的方式来处理文件操作,它不仅能确保文件在操作完成后自动关闭,还能处理文件操作中的异... 目录什么是 with open()?为什么使用 with open()?使用 with open() 进行

MySQL高级查询之JOIN、子查询、窗口函数实际案例

《MySQL高级查询之JOIN、子查询、窗口函数实际案例》:本文主要介绍MySQL高级查询之JOIN、子查询、窗口函数实际案例的相关资料,JOIN用于多表关联查询,子查询用于数据筛选和过滤,窗口函... 目录前言1. JOIN(连接查询)1.1 内连接(INNER JOIN)1.2 左连接(LEFT JOI

MySQL 中查询 VARCHAR 类型 JSON 数据的问题记录

《MySQL中查询VARCHAR类型JSON数据的问题记录》在数据库设计中,有时我们会将JSON数据存储在VARCHAR或TEXT类型字段中,本文将详细介绍如何在MySQL中有效查询存储为V... 目录一、问题背景二、mysql jsON 函数2.1 常用 JSON 函数三、查询示例3.1 基本查询3.2

SpringBatch数据写入实现

《SpringBatch数据写入实现》SpringBatch通过ItemWriter接口及其丰富的实现,提供了强大的数据写入能力,本文主要介绍了SpringBatch数据写入实现,具有一定的参考价值,... 目录python引言一、ItemWriter核心概念二、数据库写入实现三、文件写入实现四、多目标写入

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

使用Python将JSON,XML和YAML数据写入Excel文件

《使用Python将JSON,XML和YAML数据写入Excel文件》JSON、XML和YAML作为主流结构化数据格式,因其层次化表达能力和跨平台兼容性,已成为系统间数据交换的通用载体,本文将介绍如何... 目录如何使用python写入数据到Excel工作表用Python导入jsON数据到Excel工作表用